我正在使用Rails构建电子商务,我遇到了这个问题:
当我尝试从浏览器创建某个类别中的新项目时,创建的项目不会获得该类别的ID。
http://localhost:3000/categories/1/items/new
在控制台中,我可以验证params是否正确获取了category_id:
Parameters: {"category_id"=>"1"}
创建项目后,category_id等于nil。
这是我的项目模型文件:
class Item < ActiveRecord::Base
belongs_to :category
end
类别模型:
class Category < ActiveRecord::Base
has_many :items
end
这是我的items_controller.rb文件,我将category_id传递给Item:
class ItemsController < ApplicationController
# other actions are ommited
def new
@item = Item.new
@item.category_id = params[:category_id]
end
end
您还可以查看整个应用程序: https://github.com/kaneru/estore
提前致谢。
答案 0 :(得分:2)
您的views/items/_form.html.erb
应如下所示:
<div class="row">
<div class="col-lg-4 col-md-offset-4">
<%= simple_form_for @item do |f| %>
<%= f.hidden_field :category_id,value: params[:category_id] %>
<%= f.input :title %>
<%= f.input :price %>
<%= f.input :color %>
<%= f.input :weight %>
<%= f.input :description, as: :text %>
<%= f.input :picture, as: :file %>
<%= f.button :submit, class: "btn btn-primary" %>
<% end %>
<br/>
<%= render "menu" %>
</div>
</div>