rails link_to生成不需要的id

时间:2015-04-30 10:09:32

标签: ruby-on-rails

我有一个模型“arbete”的索引,如果提供:id,它会过滤索引并仅显示具有id的车辆的索引。

如果我在视图中创建了一个再次显示整个索引的link_to,它仍然会再次生成索引链接和id,即使我没有提供动作或id。

link_to("show all", :controller => 'arbete')

产生

<a href="/arbete/index/22">show all</a>

我找到的唯一解决方案是指定:id =&gt; ''然后我得到了链接:<a href="/arbete/index">

为什么表现得像这样?

更新

arbete_controller.rb

 def index

     @arbetecl = Arbete.order("id ASC").where(:oppen => false)
     if params[:id].present?
     @vehicle = Vehicle.find(params[:id])
      @arbeteop = @vehicle.arbetes.all
      else
     @arbeteop = Arbete.order("id ASC").where(:oppen => true)
   end

在视图中链接

<li><%= link_to "Testarbete", :controller => 'arbete' %></li>
如果发送id参数,则生成

<li><a href="/arbete/index/67">Testarbete</a></li>

的routes.rb

 match ':controller(/:action(/:id))', :via => [:get, :post]

我认为它是一个理想的行为,但我找不到原因,它只发生在这个模型和控制器上,但它也是唯一一个获得其索引动作的参数。

1 个答案:

答案 0 :(得分:2)

您需要指定动作和控制器,或者编写要为其生成链接的完整URL帮助程序。

link_to("show all", {:controller => 'arbete', :action => 'index'})

link_to("show all", arbetes_path)