0

我有一个状态更新和评论数据库表。

一个用户有很多状态更新,一个状态更新有很多评论。与 facebook 类似,当用户朋友进入用户 feed 页面(显示页面)时,他们应该能够评论用户状态更新。

我在保存用户朋友评论时遇到问题..我的代码在下面..我认为它与评论控制器有关,创建方法,“@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

4

2 回答 2

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])
    ...

我不完全知道这里发生了什么,但它对我有用~希望它对某人有所帮助~

于 2010-12-13T06:16:19.063 回答
0

检查表单的 html 以确保其正确。另请查看将哪些参数发送到创建操作。

我看到的主要是状态更新和评论的表单是嵌套的,并且都使用块参数f。这可能会导致事情变得非常奇怪(特别是因为块参数的范围在 ruby​​ 1.8 和 1.9 之间不同)。看起来您实际上并不想要嵌套的表单。您还应该修复 html 中的缩进。

于 2010-11-22T16:23:40.630 回答