我的模型如下;
模型
shop.rb
class Shop < ActiveRecord::Base
belongs_to :order
has_many :items
has_many :categories
end
item.rb的
class Item < ActiveRecord::Base
belongs_to :shop
has_many :categories
end
如何保存shop_id
数据时如何在Item
中检索并存储item
?
虽然我觉得像@item.shop
这样的东西有用,但我不知道如何应用它。
模式
ActiveRecord::Schema.define(version: 20160615060137) do
...
create_table "shops", force: :cascade do |t|
t.string "name"
t.integer "order_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "items", force: :cascade do |t|
t.string "name"
t.integer "shop_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
...
end
items_controller.rb
class ItemsController < ApplicationController
def new
@item = Item.new
end
def create
@item = Item.new(item_params)
if @item.save
flash[:success] = "item created!"
redirect_to root_url
else
render 'new'
end
end
private
def item_params
params.require(:item).permit(:name, :shop_id)
end
end
视图/项目/ new.html.erb
<%= form_for(@item) do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<br>
<%= f.submit "Post" %>
<% end %>
如果你能给我任何建议,我将不胜感激。
答案 0 :(得分:1)
你可以用3种方式做到这一点,
Dirty:在hidden_field
中添加名为shop_id
的{{1}},并将hidden_field分配给您的值。
最佳:创建嵌套对象。在路径文件中执行:
item/_form
它会生成resources :shops do
resources :items
end
项目路径,如new
。这样你就可以获得root_url/shops/1/items/new
或强>
您可shop_id
create
项目对象与new
类似:
shop