我正在制作一个示例应用(博客应用),但我仍然试图想象一下帖子的评论,只是我看到了创建的日期。
使用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
欢迎任何帮助
答案 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
.. !!