简体   繁体   中英

How to add params id in rails link_to

I have a Job model that contains a Company_id as a foreign key. On the company show page, I want to use a link_to tag that links to the Job new page so I can create a new job with the company_id using simple_form.

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

I get this error "No route matches {:action=>"new", :controller=>"jobs", :id=>"13"}, missing required keys: [:company_id]" This is my nested route

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

From rails routes, this is the route to the job new page

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

This is the simple-form in the job_new page

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

I would like know how I can include the company_id in to the link_to tag in order to use simple_form in the job new_page to create a new job.

Rails routes can take arguments; if you ever want to explicitly pass a parameter to a route you can do so just like you would pass an argument to any other method:

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

*note: this assumes you have defined @company somewhere on this view.

In the case of general resource routes, Rails is smart enough to insert these params in the right place. It's worth noting though that if a param is not defined on the route in routes.rb Rails will tack on these passed parameters to the end of the route as query strings.

For example, if you have a route like

get 'landing_pages/page' => '#landing_pages#page'

and you called:

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

The route will become /landing_page/page?brand=Apple

For further reference: http://guides.rubyonrails.org/routing.html

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM