rails3没有将第二个id添加到我的表中

时间:2011-06-16 19:53:51

标签: ruby-on-rails-3 routing foreign-keys models nested

我遇到的问题是company_id没有保存到详细信息表中 我知道company_id在那里我使用<%= debug(params [:id])%>进行检查在添加所有公司详细信息之前的表单上,但由于某种原因除了company_id

之外还保存了其他所有内容

##user.rb
has_one :company

##company.rb
belongs_to :user
has_one :detail

##detail.rb
belongs_to :user

##details controller
 def new
    @detail = Detail.new
    user_id = session[:user_id]
    company_id = params[:id]

  end

  def create     
    @detail = Detail.new(params[:detail])
    @detail.user_id = session[:user_id]
    @detail.company_id = params[:id]
  end

###settings.html.erb
### this is where i make sure that company_id gets pass with the url

  link_to 'New Detail', {:controller => 'details', :action =>'new', :id => company.id }, :class => 'plus'

#####routes
    resources :details
    resources :companies
    resources :users
    resources :sessions

我知道如果您知道更好的方式,这可能看起来不太合适或者不合适请告诉我...提前谢谢。

2 个答案:

答案 0 :(得分:0)

我立即注意到了一些事情。您可能需要先修复关联。假设用户有一家公司,公司有一个细节。

##user.rb
has_one :company

##company.rb
belongs_to :user
has_one :detail

##detail.rb
belongs_to :user

应该是:

##user.rb
has_one :company

##company.rb
belongs_to :user
has_one :detail

##detail.rb
belongs_to :company

虽然,取决于您的域名要求。我通常会这样做:用户has_many公司。由于公司的细节是1:1,我会在公司内部包含所有细节。

答案 1 :(得分:0)

直到后来我才意识到这一点,但是我需要它将值从视图传递给from,就像这样

  <% @companies.each do |company| %>
      <%= link_to 'New Detail', {:controller =>'details', :action => 'new', :company_id => company.id},  :class => 'plus' %>
    <% end %>

我需要它来收集来自...的价值

<%= form_for(:detail, :url =>{:action => 'create', :company_id => @company.id}) do |f| %>
...(values)
<% end %>