2008-04-09
关于路由resources中指定非惯例名称controller的问题
由于网站中同时有blog,group等功能模块,因此就把controller分别命名为 GroupTopics,BlogTopics等
数据库表名叫 group_topics
Model名叫 group_topic
以上都没什么问题
希望通过 /groups/1/topics , /blogs/1/topics 这样的URL访问,于是就指定了controller的名称
在路由中指定了如下的嵌套resources:
这个也没问题
不过写页面表单的时候问题来了
但是,按照rails2里面那种简洁式写法:
发现rails在这里是按照@topic对象的实际类名“GroupTopic”去寻找路由,于是
并不是去找:group_topic_path
而是去找:group_group_topic_path
当然找不到了。
于是很多地方都不能用rails2的简洁写法。感觉不太优雅。
想问的问题就是,rails2里面有没有什么机制能够使得根据对象自动获取路由时,不按照对象类名自动获取,而是可以特别指定?
如果没有这种机制,我想自己修改源代码实现,请高手们给一点提示?
数据库表名叫 group_topics
Model名叫 group_topic
以上都没什么问题
希望通过 /groups/1/topics , /blogs/1/topics 这样的URL访问,于是就指定了controller的名称
在路由中指定了如下的嵌套resources:
map.resources :groups do |group|
group.resources :topics,:controller=>'GroupTopics'
end
这个也没问题
不过写页面表单的时候问题来了
<%=link_to 'test',group_topic_url(@group,@topic)%> # 这样可以正确指向/groups/1/topics/15这样的链接
但是,按照rails2里面那种简洁式写法:
<%=link_to 'test',[@group,@topic]%> # 报错了: # undefined method `group_group_topic_path' for #<ActionView::Base:0x727769c>
发现rails在这里是按照@topic对象的实际类名“GroupTopic”去寻找路由,于是
并不是去找:group_topic_path
而是去找:group_group_topic_path
当然找不到了。
于是很多地方都不能用rails2的简洁写法。感觉不太优雅。
想问的问题就是,rails2里面有没有什么机制能够使得根据对象自动获取路由时,不按照对象类名自动获取,而是可以特别指定?
如果没有这种机制,我想自己修改源代码实现,请高手们给一点提示?
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 157 次
- 性别:

- 来自: 某个小角落

- 详细资料
搜索本博客
最新评论
-
关于路由resources中指定 ...
由于暂时没有好的解决方法,所有类似这样的地方都通过自己封装Helper来实现了。 ...
-- by 7thbyte






评论排行榜