如何在rails link_to中添加params id

时间:2017-12-28 22:59:04

标签: ruby-on-rails ruby

我有一个包含Company_id作为外键的Job模型。在公司展示页面上,我想使用链接到Job新页面的link_to标记,这样我就可以使用simple_form使用company_id创建一个新作业。

<%= link_to "Create Job", new_company_job_path %>

我收到此错误“没有路由匹配{:action =&gt;”new“,:controller =&gt;”jobs“,:id =&gt;”13“},缺少必需的键:[:company_id]” 这是我的嵌套路线

  resources :companies do
   resources :jobs, only: [:new, :create, :update, :destroy]
  end

从铁路路线,这是工作新页面的路线

         new_company_job GET    /companies/:company_id/jobs/new(.:format) jobs#new

这是job_new页面中的简单形式

  <%= simple_form_for (@job)  do |f| %> etc  

我想知道如何将company_id包含在link_to标记中,以便在作业new_page中使用simple_form来创建新作业。

1 个答案:

答案 0 :(得分:1)

Rails路由可以带参数;如果您想要将参数显式传递给路径,您可以这样做,就像将参数传递给任何其他方法一样:

<%= link_to "Create Job", new_company_job_path(company_id: @company.id) %>

*注意:这假设您已在此视图的某处定义了@company

对于一般资源路由,Rails足够聪明,可以在正确的位置插入这些参数。值得注意的是,如果未在 routes.rb 中的路线上定义参数,Rails会将这些传递的参数作为查询字符串添加到路径末尾。

例如,如果您有像

这样的路线
get 'landing_pages/page' => '#landing_pages#page'

你打来电话:

<%= link_to "Go to your landing page", landing_pages_page_path(brand: 'Apple') %>

路线将变为/landing_page/page?brand=Apple

供进一步参考:http://guides.rubyonrails.org/routing.html