2013-09-22 1 views
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입니다 :

또한
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 

?

편집 (내 스키마를 추가하는 것을 잊었다) : 당신은 더 많은 읽을 수 있습니다 여기에

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

:

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

답변

0

가 당신의 fields_for을 변경해보십시오

Rails API Doc

그것 또한 입찰가 표에 금액 항목이 누락 된 것 같습니다. 도움이

희망 ....

당신이 당신의 품목 쇼 컨트롤러

def show 
    @bid = Bid.new 
    ... 
end 
+0

좋은 캐치에 입찰 인스턴스를 생성해야합니다. 불행히도 그것은 여전히 ​​문제가 아니 었습니다. 나는 항목보기보기에서 양식을가집니다. 양식 대신 업데이트를 작성해야합니다. – Dileet

+0

양식을 수동으로 지정하고 'form_for @item, url : bids_path, method : post'를 사용하십시오. – Almaron

+0

경로가 일치하지 않습니다 {: action => "index", : controller => "bids", : id => "11"} 필수 키가 누락되었습니다 : [: item_id] – Dileet