在rails app中发表评论

时间:2014-08-04 19:03:38

标签: ruby-on-rails comments

我正在制作一个示例应用(博客应用),但我仍然试图想象一下帖子的评论,只是我看到了创建的日期。

使用RailInstaller 3.0.0 rails -v 4.1.4 ruby -v 2.0.0p195 在Windows 7中运行

应用/视图/帖/ show.html.erb

> <h1><%= @post.titulo %></h1> 
> <p><%= @post.texto %></p>
> 
> <h2>Comentarios</h2> 
> <% @post.comentarios.each do |comentario| %>
> <p><%= comentario.texto %></p>    
> <p><%= time_ago_in_words comentario.created_at %> atras</p>
> <% end %>
> 
> <%= form_for [@post, @post.comentarios.build] do |f| %>       
> <%= f.text_area :texto %></br>        
> <%= f.submit 'Comenta' %> 
> <% end %>
> 
> <p>
> <%= link_to 'Atras', posts_path %>
> |
> <%= link_to 'Editar',edit_post_path(@post) %>
> | 
> <%= link_to 'Borrar', @post, method: :delete, data: { confirm: 'Estás seguro?' } %>
> </p>

应用/控制器/ comentarios_controller.rb

class ComentariosController < ApplicationController
  def create
      @post = Post.find(params[:post_id])
      @comentario = @post.comentarios.build(params[:comentarios])
      @comentario.save

      redirect_to @post
  end

  def destroy
  end
end

欢迎任何帮助

2 个答案:

答案 0 :(得分:0)

如果您在rails 4中工作,则必须允许控制器中的params:

def create
  @post = Post.find(params[:post_id])
  @comentario = @post.comentarios.build(comment_params)
  @comentario.save

  redirect_to @post
end

private

def comment_params
  params.require(:comentario).permit(:texto)
end

答案 1 :(得分:0)

根本问题是texto实际上没有在comentarios的属性中保存任何内容。您可以通过查看数据库中的comentarios表来交叉检查我的单词。

在rails 4中,您需要允许属性。

在您的控制器中,您可以这样做:

class ComentariosController < ApplicationController
  def create
      @post = Post.find(params[:post_id])
      @post.comentarios.create(comentario_params)

      redirect_to @post
  end

  ...
  ...

  private

  def comentario_params
    params.require(:comentario).permit(:texto)
  end
end

魔术!您现在可以在texto页面上看到show .. !!