2010-10-24 56 views
2

我試圖將fields_for屬性添加到嵌套rails表單。任何時候,我嘗試創建一個新的對象,它返回預期Rails:無法獲取fields_for在嵌套資源內工作

消息(#58819400),得到了 陣列(#18903800)...

應用程序/控制器/ discussions_controller.rb:53:在 '創建」

如果我嘗試的基礎上,而不是非嵌套資源(又名‘的form_for @parent’從形式訪問嵌套的fields_for‘的form_for [@parent,@child]’它工作正常。下面的代碼 - 任何幫助真的很讚賞。

控制器:

# GET /discussions/new 
    # GET /discussions/new.xml 
    def new 
    @forum = Forum.find(params[:forum_id]) 
    @discussion = Discussion.new 
    @discussion.messages.build 

    respond_to do |format| 
     format.html # new.html.erb 
     format.xml { render :xml => @discussion } 
    end 
    end 


    def create 
    @forum = Forum.find_by_id(params[:forum_id]) 
    @discussion = @forum.discussions.new(params[:discussion]) 
    @discussion.user = current_user 

    respond_to do |format| 
     if @discussion.save 
     format.html { redirect_to([@forum, @discussion], :notice => 'Discussion was successfu#ly created.') } 
     format.xml { render :xml => [@forum, @discussion], :status => :created, :location => @discussion } 
     else 
     format.html { render :action => "new" } 
     format.xml { render :xml => @discussion.errors, :status => :unprocessable_entity } 
     end 
    end 
    end 

型號:

class Forum < ActiveRecord::Base 
    belongs_to :user 
    has_many :discussions, :dependent => :destroy 
    validates :title, :presence => true 

    accepts_nested_attributes_for :discussions, :allow_destroy => true 
end 

class Discussion < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :forum 
    has_many :messages, :dependent => :destroy 
    validates :title, :presence => true 
end 

class Message < ActiveRecord::Base 
    belongs_to :user 
    validates :user, :presence => true 
    validates :content, :presence => true 
end 

的觀點:

<%= form_for [@forum, @discussion] do |f| %> 
    <% if @discussion.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@discussion.errors.count, "error") %> prohibited this discussion from being saved:</h2> 

     <ul> 
     <% @discussion.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.label :title %><br /> 
    <%= f.text_field :title %> 
    </div> 
    <%= f.fields_for :messages do |builder| %> 
    <%= builder.label :content, "Message" %> 
    <%= builder.text_area :content, :rows => 10 %> 

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

最後,路由:

resources :forums do 
    resources :discussions do 
     resources :messages 
    end 
    end 

任何幫助,非常讚賞 - 一世'米完全難倒了。

回答

2

Arghhh - 真的很抱歉的人......我剛剛意識到我忘記了討論模型中的accep_nested_attributes_for,&因此論壇可以訪問討論,但討論無法回到消息。

謝謝無論如何。