2010-07-12 77 views
0

所以..这里是我的link_toRuby on Rails的:的link_to怪怪

  • <%=的link_to “归档”,:动作=> '存档' %>
  • 和我的控制台输出

    Parameters: {"action"=>"archive", "controller"=>"achievables"} 
    

    为什么该操作不是“存档”? 该方法在控制器中定义...拼写正确,所有内容。

    编辑: 从routes.rb中

    map.archives 'achievable/archive', :controller => 'achievables', :action => 'archive' 
    
        map.resources :achievables, :member => {:build => [:get,:post], :publish_detail => [:get,:post], :publish=>[:get,:post], :confirm_publish=>[:get,:post], :confirm_delete=>[:get,:post]} 
    

    现在,错误的是

    Showing app/views/layouts/build_archivable.html.erb where line #6 raised: 
    
    Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id 
    

    这又是走错了路。 = \

    回答

    1

    尝试指定的动作作为一个字符串,而不是一个符号:

    <%= link_to 'Archive', :action => 'archive' %> 
    

    或者,你可能有内config/routes.rb这是获得默认/:controller/:action/:id路线之前匹配的定义优先级更高的路线(Rails的开始于文件的顶部并向下工作,直至找到与URL匹配的路线)。

    +0

    你将如何覆盖这种路由? – NullVoxPopuli 2010-07-12 15:18:26

    +0

    @DerNalia编辑你的问题,告诉我们你的路线文件的内容,然后我可以告诉你,如果是这样的话。 – 2010-07-12 15:30:05

    +0

    完成。我只添加了我认为相关的内容。路线文件是100行。如果我在格式化方面有发言权可能会更多。 – NullVoxPopuli 2010-07-12 15:35:52