сохранение объекта комментариев с отношением к обновлению статуса .build ruby - PullRequest
0 голосов
/ 21 ноября 2010

У меня есть обновление статуса и таблица комментариев db.

У пользователя много обновлений статуса, а у обновления статуса много комментариев.Аналогично Facebook, когда друг пользователя переходит на страницу фида пользователей (показывает страницу), он должен иметь возможность комментировать обновления статуса пользователя.

У меня проблемы с сохранением комментария друзей пользователя .. мой код приведен ниже .. Я думаю, что это связано с контроллером комментариев, методом Create, "@comment = @ statusupdate.comments.build (params [: комментарий]) "

Любое руководство очень ценится!спасибо!

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

Ответы [ 2 ]

0 голосов
/ 13 декабря 2010

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

Я точно не знаю, что здесь происходит, но это сработало для меня, надеюсь, это поможеткто-то вне ~

0 голосов
/ 22 ноября 2010

Проверьте HTML-форму, чтобы убедиться, что это правильно.Также посмотрите, какие параметры отправляются в действие create.

Главное, что я вижу, это то, что формы для обновления статуса и комментариев вложены, и оба используют параметр блока f.Это может привести к очень странным вещам (особенно из-за того, что область видимости параметров блока отличается между рубином 1,8 и 1,9).Также кажется, что вы на самом деле не хотите вложенных форм.Возможно, вам также следует исправить отступ в вашем html.

...