我遇到的问题是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
我知道如果您知道更好的方式,这可能看起来不太合适或者不合适请告诉我...提前谢谢。
答案 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 %>