0

我有一个项目模型

class Item < ActiveRecord::Base
  belongs_to :user
  has_many :bids

  accepts_nested_attributes_for :bids
end

也是一个投标模型

class Bid < ActiveRecord::Base
  belongs_to :user
  belongs_to :item
end

我正在尝试对某个项目出价并让出价属于某个项目。

这是我的项目视图,我正在尝试使用嵌套表单:

<%= form_for @item do |i| %>

  <h2>Place a bid</h2>
  <%= i.fields_for :bid do |bid| %>
    <%=bid.label :amount %>
    <%=bid.text_field :amount %>
  <% end %>

  <div class="form-actions">
    <%= i.button :submit, class: 'btn btn-primary' %>
  </div>
<% end %>

但它没有在数据库中创建出价。

这是项目控制器中允许的参数:

params[:item].permit(:user_id, :title, :bids_attributes => [:amount, :user_id, :item_id])

还有我的路线:

item_bids_path   GET     /items/:item_id/bids(.:format)  bids#index
POST     /items/:item_id/bids(.:format)  bids#create
new_item_bid_path    GET     /items/:item_id/bids/new(.:format)  bids#new
edit_item_bid_path   GET     /items/:item_id/bids/:id/edit(.:format)     bids#edit
item_bid_path    GET     /items/:item_id/bids/:id(.:format)  bids#show
PATCH    /items/:item_id/bids/:id(.:format)  bids#update
PUT  /items/:item_id/bids/:id(.:format)  bids#update
DELETE   /items/:item_id/bids/:id(.:format)  bids#destroy

我错过了什么??

编辑(忘记添加我的架构):

create_table "bids", force: true do |t|
    t.datetime "created_at"
    t.datetime "updated_at"
    t.integer  "item_id"
    t.integer  "user_id"
  end
4

1 回答 1

0

尝试将您的 fields_for 更改为:

<%= i.fields_for :bid, @bid do |b| %>

你可以在这里阅读更多:

Rails API 文档

您似乎还缺少出价表中的金额列?

希望有帮助....

确保在项目显示控制器中创建出价实例

def show
   @bid = Bid.new
   ...
end
于 2013-09-22T04:39:24.877 回答