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

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

看来想完全偷懒并不容易。
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

7thbyte
  • 浏览: 157 次
  • 性别: Icon_minigender_1
  • 来自: 某个小角落
  • 详细资料
搜索本博客
博客分类
最新评论