开发者

Rails link from one model to another based on db field?

I have a company model and a person model with the following relationships:

class Company < ActiveRecord::Base
  has_many :kases
  has_many :people
  def to_s; companyname; end
end

class Person < ActiveRecord::Base
  has_many :kases # foreign key in join table
  belongs_to :company
end

In the create action for the person, I have a select box with a list of the companies, which assigns a company_id to that person's record:

<%= f.select :company_id, Company.all.collect {|m| [m.companyname, m.id]} %>

In the show view for the person I can list the company name as follows:

<%=h @person.company.companyname %>

What I am trying to work out, is how do I make that a link to the company record?

I have tried:

<%= link_to @person.company.companyname %>

but that just outputs the company name inside a href tag but links开发者_开发问答 to the current page.

Thanks,

Danny


You need pass in second argument the path where you want go

<%= link_to @person.company.companyname, @person.company %>

or with the full version :

<%= link_to @person.company.companyname, company_url(@person.company) %>


The thing is, link_to cannot guess where you want it to lead to, if you give it only the text of the link :)

In order to have the link lead to the company page, you need to add a path:

<%= link_to @person.company.companyname, company_path(@person.company) %>

This assumes you have proper restful routes for your company

map.resources :companies

and the page you're heading to is companies/show.html.erb.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜