<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>7thbyte</title>
    <description></description>
    <link>http://7thbyte.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>关于路由resources中指定非惯例名称controller的问题</title>
        <author>7thbyte</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://7thbyte.javaeye.com">7thbyte</a>&nbsp;
          链接：<a href="http://7thbyte.javaeye.com/blog/180904" style="color:red;">http://7thbyte.javaeye.com/blog/180904</a>&nbsp;
          发表时间: 2008年04月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          由于网站中同时有blog，group等功能模块，因此就把controller分别命名为 GroupTopics，BlogTopics等<br /><br />数据库表名叫 group_topics<br />Model名叫 group_topic<br /><br />以上都没什么问题<br /><br />希望通过 /groups/1/topics , /blogs/1/topics 这样的URL访问，于是就指定了controller的名称<br /><br />在路由中指定了如下的嵌套resources：<br /><br /><pre name="code" class="ruby">
    map.resources :groups do |group|
        group.resources :topics,:controller=>'GroupTopics'
    end
</pre><br /><br />这个也没问题<br /><br />不过写页面表单的时候问题来了<br /><br /><pre name="code" class="ruby">
&lt;%=link_to 'test',group_topic_url(@group,@topic)%>
# 这样可以正确指向/groups/1/topics/15这样的链接
</pre><br /><br />但是，按照rails2里面那种简洁式写法：<br /><pre name="code" class="ruby">
&lt;%=link_to 'test',[@group,@topic]%>
# 报错了：
# undefined method `group_group_topic_path' for #&lt;ActionView::Base:0x727769c>
</pre><br /><br />发现rails在这里是按照@topic对象的实际类名“GroupTopic”去寻找路由，于是<br />并不是去找：group_topic_path<br />而是去找：group_group_topic_path<br /><br />当然找不到了。<br /><br />于是很多地方都不能用rails2的简洁写法。感觉不太优雅。<br /><br />想问的问题就是，rails2里面有没有什么机制能够使得根据对象自动获取路由时，不按照对象类名自动获取，而是可以特别指定？<br /><br />如果没有这种机制，我想自己修改源代码实现，请高手们给一点提示？
          <br/>
          <span style="color:red;">
            <a href="http://7thbyte.javaeye.com/blog/180904#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 09 Apr 2008 16:58:16 +0800</pubDate>
        <link>http://7thbyte.javaeye.com/blog/180904</link>
        <guid>http://7thbyte.javaeye.com/blog/180904</guid>
      </item>
  </channel>
</rss>