2010-11-21 47 views
0

我有一個狀態更新和註釋數據庫表。保存與狀態更新關係的評論對象.build ruby​​

用戶有很多狀態更新,狀態更新有很多評論。與Facebook類似,當用戶朋友轉到用戶供稿頁面(顯示頁面)時,他們應該能夠對用戶狀態更新發表評論。

我遇到了保存用戶朋友評論的問題..我的代碼在下面..我認爲它與評論控制器,創建方法有關「@comment = @ statusupdate.comments.build(params [ :comment])「

任何指導非常感謝!謝謝!

class UsersController < ApplicationController 
    def show 
    @user = User.find(params[:id]) 
    @statusupdates = @user.statusupdates.paginate(:page => params[:page], :per_page => 25) 
    @statusupdate = Statusupdate.new  
    @comment = Comment.new 
    end 
end 

show.html.erb 
    <% form_for @statusupdate do |f| %> 
    <%= f.error_messages %> 
    <div class="field"> 
    <%= f.text_field :content %> 
    </div> 

<% @statusupdates.each do |s| %> 

    <%= s.content %><br /> 

    <% form_for @comment do |f| %> 
    <%= f.error_messages %> 
     <div class="field"> 
     <%= f.text_field :comment %> 
     </div> 
     <div class="field"> 
     <%= f.hidden_field :user_id, :value => current_user.id %> 
     </div> 
     <div class="actions"> 
     <%= f.submit "Submit" %> 
     </div> 
     <br><br> 
    <% end %> 
    <% end %> 

class CommentsController < ApplicationController 
    def create 
    @comment = @statusupdate.comments.build(params[:comment]) 
     if @comment.save 
     flash[:success] = "Comment created!" 
     redirect_to root_path 
    else 
     @feed_items = [] 
     render 'pages/home' 
    end 
    end 
end 

+0

你可以提供更多的細節問題是什麼?像Rails給出的錯誤是什麼? – dteoh 2010-11-22 03:41:32

回答

0

show.html.erb-我改變了狀態更新的評論形式的頂線:

<% form_for (s, s.comments.build) do |f| %> 
... 

class CommentsController < ApplicationController 
    def create 
    @statusupdate = statusupdate.find(params[:statusupdate_id]) 
    @comment = @statusupdate.comments.create(params[:comment]) 
    ... 

我完全不知道這是怎麼回事上,但它的工作對我來說〜希望它可以幫助別人out〜

0

檢查HTML表單,以確保其右。另請參閱發送到創建操作的參數。

我看到的主要問題是狀態更新和註釋的表單是嵌套的,都使用塊參數f。這可能會導致事情變得非常奇怪(尤其是因爲在ruby 1.8和1.9之間block參數的範圍不同)。它也似乎你實際上並不希望嵌套的形式。你也應該在你的html中修改縮進。