Pergunta

Eu tenho uma atualização de status e comentar tabela DB.

Um usuário tem muitas atualizações de status e uma atualização de status tem muitos comentários. Semelhante ao Facebook, quando um amigo dos usuários vai para a página de feeds dos usuários (página de show), ele deve poder comentar as atualizações de status dos usuários.

Estou tendo problemas para salvar os usuários comentários de amigos. Meu código está abaixo. Acho que tem algo a ver com o controlador de comentários, crie método, "@comment = @statusupdate.comments.build (params [: comentário]) "

Qualquer orientação é muito apreciada! obrigado!

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

Foi útil?

Solução 2

show.html.erb- Mudei a linha superior do formulário de comentário de atualização de status para:

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

Eu não sei exatamente o que está acontecendo aqui, mas funcionou para mim ~ espero que ajude alguém ~

Outras dicas

Verifique o HTML do formulário para garantir que esteja certo. Veja também quais parâmetros estão sendo enviados para a ação Criar.

A principal coisa que vejo é que os formulários para a atualização de status e os comentários são aninhados, e ambos usam o parâmetro de bloco f. Isso pode fazer com que as coisas fiquem muito estranhas (especialmente porque o escopo dos parâmetros de bloco difere entre o Ruby 1.8 e 1.9). Parece também que você não quer os formulários aninhados. Você provavelmente também deve corrigir o recuo no seu HTML.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top