Прежде всего, мысль - в большинстве случаев продукты имеют много категорий, но каждая категория также содержит много продуктов.Возможно, ваша ассоциация должна быть многим ко многим?К вашему актуальному вопросу.
Если я правильно понимаю, ваш вопрос действительно о том, как создавать категории и продукты, которые связаны друг с другом в базе данных, то есть как установить значение product_id
при сборке.новая категория.
Для ясности, если она вам понадобится, product_id будет установлен только для категории .В конце концов, категория принадлежит этому продукту, поэтому она должна содержать идентификатор своего владельца.
Итак, допустим, вы хотите создать новую категорию, которая принадлежит существующему продукту - вы можете сделать это:
# in your view, where you link from products/show.html.erb to category/new.html.erb
<%= link_to "Build new category for this product", new_category_url(:id => @product.id) %>
# you must have @product defined, and you also must have
# 'resources :categories' in your routes file
# in your controller action categories/new, set the new category's product id:
def new
@category = Category.new(:product_id => params[:id])
end
# include a hidden field to contain the product_id in your new form
<%= form_for @category do |f| %>
<%= f.hidden_field :product_id %>
... other fields, labels, etc.
<% end %>
# save the record as you normally would (analogous to the code in your comment to @Chowlett).
@category = Category.new(params[:category])
if @category.save
redirect_to :action => "list", :notice => "Category saved successfully."
else
render :action => "new"
end
Приведенный выше код позволяет вам создать продукт, а затем каждыйкатегория по одному.Итак, мы сначала создаем ваш продукт, а затем включаем ссылку со страницы продукта / шоу на вашу категорию / новую форму, передавая идентификатор продукта, частью которого вы хотите включить эту категорию.
Если выхочу создать продукт и некоторые категории одновременно , это немного сложнее.Для получения дополнительной информации об этом посмотрите http://railscasts.com/episodes/196-nested-model-form-part-1 (это первый из трех частей) и https://github.com/ryanb/nested_form.. Я не предлагаю этот курс действий, если вы не очень хорошо свышеуказанные основы.Однажды я увлекся этим кодом в течение недели, когда был новичком в Rails!