【问题标题】:rails link_to generates unwanted idrails link_to 生成不需要的 id
【发布时间】:2015-07-09 23:43:33
【问题描述】:

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

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

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

生成:

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

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

为什么会这样?

更新

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]

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

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    您需要同时指定操作和控制器,或者编写要为其生成链接的完整 url 助手。

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

    link_to("show all", arbetes_path)
    

    【讨论】:

    • 这仍然会生成一个带有 id 的索引。它起作用的唯一方法是添加:id => ''。这很奇怪,因为我在尝试这种过滤技术之前从未见过这种行为。
    • 真的很奇怪。您愿意分享更多代码,以便我可以查看或复制吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多