所以我正在创建一个博客rails应用程序,我试图在博客上创建一个评论会话。我试图使用简单的表单渲染表单,但我很难让简单的表单工作。现在我有:
<%= simple_form_for ([@user, @post.comments.build]) do |f| %>
<%= f.input :comment %>
<%= f.button :submit %>
<% end %>
但是它说post.com并不是一条定义的路径。
我的评论模型:
class Comment < ActiveRecord::Base
belongs_to :post
belongs_to :user
end
帖子属于user和has_many条评论 用户有很多帖子,有很多评论
以下是我目前的路线:
resources :posts do
resources :comments
end
有什么建议吗? 谢谢!
答案 0 :(得分:1)
为什么要在simple_form_for中发送@user?
使用@post
代替@user
。
答案 1 :(得分:1)
从表单中删除用户。
<%= simple_form_for [@post, @post.comments.build] do |f| %>
<%= f.input :comment %>
<%= f.button :submit %>
<% end %>
然后,如果您使用的是设计,则将使用类似current_user
的内容在控制器中分配用户值。
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.build(comment_params)
@comment.user = current_user
@comment.save
redirect_to @post
end
def comment_params
params.require(:comment).permit(:comment)
end
将名为comment
的模型和名为comment
的字段放入其中是一个坏主意。我更愿意称之为content
答案 2 :(得分:1)
我通过为评论生成迁移找到了解决方法。我只需要确保具有关联的所有内容实际上都具有数据库中的列。之后我确定我正在渲染@ post.com而不是评论/评论。希望这可以帮助遇到同样问题的任何人。