【发布时间】:2016-01-07 23:37:16
【问题描述】:
posts_controller.rb:
def create
@post = current_user.posts.build(post_params)
if @post.save
flash[:success] = "Post created!"
redirect_to root_url
else
render 'pages/home'
end
end
private
def post_params
params.require(:post).permit(:content)
end
发帖形式:
<%= form_for(@post) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="field">
<%= f.text_area :content, placeholder: "Compose new post..." %>
</div>
<%= f.submit "Post", class: "btn btn-primary" %>
<% end %>
cmets_controller.rb:
def create
@post = Post.find(params[:comment][:post_id])
@comment = @post.comments.build(comment_params)
@comment.user = current_user
if @comment.save
flash[:success] = "Comment created!"
redirect_to post_path(@post)
else
flash[:danger] = "Comment failed, try again."
redirect_to post_path(@post)
end
end
private
def comment_params
params.require(:comment).permit(:content)
end
cmets 形式:
<%= form_for(@comment) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="field">
<%= f.text_area :content, placeholder: "Comment..." %>
</div>
<%= f.hidden_field :post_id , value: @post.id %> // WHY DO I NEED THIS?
<%= f.hidden_field :user_id , value: current_user.id %> // AND THIS?
<%= f.submit "Post", class: "btn btn-primary" %>
<% end %>
为什么我需要隐藏字段才能使其与 cmets 一起使用,而帖子不需要它们?我的代码正在运行,我能够在谷歌上搜索一个解决方案,但仍然对 cmets 与帖子的工作方式不同感兴趣。抱歉问了一个愚蠢的问题,但作为初学者,我正在寻找类比:)
【问题讨论】:
标签: ruby-on-rails ruby forms ruby-on-rails-4