내 프로젝트에는 회사 및 제품이라는 두 가지 모델이 있습니다. 회사는 많은 제품과 제품이 회사에 속합니다. Company Show 페이지에 Product의 새 작업에 대한 링크를 추가하고 company_id를 Product new action에 전달하여 새 제품이 링크 된 회사에 자동으로 속하도록하고 싶습니다.부모 모델의 ID를 자식의 새 모델에 전달하고 레일에 작업 만들기
이렇게하려면 코드 아래에서 어떻게 변경해야합니까? 내 환경
<%= link_to "Add new product", new_product_path(company_id: @company) %>
products_controller.rb
def new
@product = Product.new(params[:company_id])
end
def create
@product = Product.new(product_params, params[:company_id])
if @product.save
flash[:success] = "Product successfully created."
redirect_to @product
else
render 'new'
end
end
new.html 4.0.2
show.html.erb (회사) 루비 2.0.0과 레일 .erb (제품)
<% provide(:title, 'New product') %>
<h1>Add a new product</h1>
<div class="row">
<div class="span6 offset3">
<%= form_for(@product) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.label :name, "Product Name" %>
<%= f.text_field :name %>
<%= f.label :description, "Description" %>
<%= f.text_area :description %>
<%= f.label :type, "Product Type" %>
<%= f.text_field :type %>
<%= f.label :released_date, "Released Date" %>
<%= f.date_field :released_date %>
#I want to omit below 2 lines by passing company_id from company show action
<%= f.label :company_id, "Company ID" %>
<%= f.text_field :company_id %>
<%= f.submit "Submit", class: "btn btn-large btn-primary" %>
<% end %>
</div>
</div>
: comapny_id가 URL에 표시된대로 새로운 제품 조치로 전달됩니다.
http://localhost:3000/products/new?company_id=6
디버그 로그에도 표시됩니다.
company_id: '6'
action: new
controller: products
무엇이 작동하지 않습니까? –
우리는 1) 오류 출력 2) params 출력 3) 모델 4) HTML 양식 출력 – JakeTheSnake
설명의 부족에 사과. 오류는 발생하지 않지만 새 제품을 만들면 : company_id는 비어있어 회사에 속하지 않습니다. 제품의 작성 조치는 회사 페이지에서 전달 된 company_id를 자동으로 상속해야 사용자가 company_id를 입력 할 필요가 없습니다. 현재 코드를 사용하면 제품이 성공적으로 생성되었지만 누락되었습니다 : company_id. – Kentwoo