论坛首页 编程语言技术论坛

关于路由resources中指定非惯例名称controller的问题

浏览 2165 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-04-09  
由于网站中同时有blog,group等功能模块,因此就把controller分别命名为 GroupTopics,BlogTopics等

数据库表名叫 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里面有没有什么机制能够使得根据对象自动获取路由时,不按照对象类名自动获取,而是可以特别指定?

如果没有这种机制,我想自己修改源代码实现,请高手们给一点提示?
   发表时间:2008-04-10  
由于暂时没有好的解决方法,所有类似这样的地方都通过自己封装Helper来实现了。

看来想完全偷懒并不容易。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics