2012-04-14 9 views
0

が、私は初心者だと、多くの記事やrailscastチュートリアルを検索しましたし、まだカントは、この団体の事を回避ルビーon Railsの - 。協会発行:(

私は2つのモデルがあり、ホテル(足場によって作成された)とファシリティはホテルにファシリティを関連付けますが、ファシリティテーブルにはブール型で必要なすべてのカラムがあるので、そのテーブルの行は1つのホテルで行います。

私はそれを表示し、施設を保存/編集/更新することはできません。モデルファシリティを作成するときに、hotel_id列を作成しました。 私のコードは次のとおりです。

モデル:

class Facility < ActiveRecord::Base 

    belongs_to :hotel 

    attr_accessible :concierge, :hotel_id, :room24h 

end 


class Hotel < ActiveRecord::Base 

    has_one :facility, :dependent => :destroy 


    accepts_nested_attributes_for :facility, :allow_destroy => true 

    attr_accessible :name, :rating, :recommended, :facility_attributes 

end 

マイ形式のビューでは、次のとおりです。

コントローラ用として
<%= form_for(@hotel) do |f| %> 

    <div class="field"> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </div> 

    <div class="field"> 
    <%= f.label :rating %><br /> 
    <%= f.number_field :rating %> 
    </div> 

    <div class="field"> 
    <%= f.label :recommended %><br /> 
    <%= f.check_box :recommended %> 
    </div> 

    <br /> 
    Hotel Facilities 

    <%= f.fields_for :facility do |facility_fields| %> 
<div class="field"> 
    <%= facility_fields.label :room24h, "24h Room Service:" %> 
    <%= facility_fields.check_box :room24h %> 
    </div> 

<div class="field"> 
    <%= facility_fields.label "Concierge:" %> 
    <%= facility_fields.check_box :concierge %> 
    </div> 

<%end%> 

    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<%end%> 

、hotels_controllerはあなたの場合と同じです足場をちょうど完了し、私のfacilities_controllerは空です。

それが今の形で施設を見せているが、私は、「作成」をクリックし、送信したときに、私が取得:パラメータ入力用として

"Can't mass-assign protected attributes: @hotel" 

app/controllers/hotels_controller.rb:46:in `new' 
app/controllers/hotels_controller.rb:46:in `create' 

を:

{"hotel"=>{"rating"=>"1", 
"name"=>"aaa", 
"recommended"=>"0", 
"@hotel"=>{"room24h"=>"1", 
"concierge"=>"1"}}, 
"commit"=>"Create Hotel", 
"utf8"=>"✓", 
"authenticity_token"=>"YU7KEJ8qz0iQcXPGkLP6BSJn7JL6df1HvuS5JnjK2eU="} 

アイデアはありますか?コントローラーには何が欠けていますか?再度お返事ありがとうございます

+0

try '<%= f.fields_for @ hotel.facility do | facility_fields | %> ' – klump

+0

あなたはストリートイングリッシュを書いている理由はありますか? de = the? – Jonathan

+0

新しいホテルを作成または保存するコントローラコードを質問に追加します。 @Amarの答えは良い推測ですが、コントローラコードがなければ、それは単なる推測です。 – mliebelt

答えて

0

新規作成/編集アクションcreate @ hotel.facility || @ hotel.build_facility

0

問題が解決しました。新しいコントローラに追加しました:同じ問題を持っている人に

@[email protected]_facility 

@klump、その構文が間違っていた、正しいものを試した後である:

<%= f.fields_for :facility do |fc|%>

だからあなたアマールに感謝し、私を正しい方向に向けるためのものです。