form_for正在创建新记录,但值为空

时间:2016-04-06 05:22:37

标签: ruby-on-rails ruby-on-rails-4

当我提交此表单时,会创建一条新记录,但不会添加这些值。尝试了一些不同的事情,但没有任何工作

评论控制器

Observer

评论视图(只是报告表格)

 def report

    @report_comment = ReportComment.new
    if @report_comment.save(report_comment_params)

      redirect_to root_path
    else
      render 'static_pages/home'
    end
  end

 private
  def report_comment_params
    params.require(:report_comment).permit(:guide_id, :submitted_by, :comment_id)

记录传递的参数

<% @report_comment = ReportComment.new %>
<% @guide = Guide.friendly.find(params[:guide_id]) %>
<% if current_user.nil?  %>
<% user_id = 0 %>
<% else %>
<% user_id = current_user.id %>
<% end %>
          <%= form_for([@report_comment], url: comments_report_path, method: :post) do |f| %>
      <%= f.hidden_field :guide_id, value: @guide.id %>
      <%= f.hidden_field :submitted_by, value: user_id %>
      <%= f.hidden_field :comment_id, value: comment.id %>

        <%= f.submit "Report" %>

    <% end %>

不确定为什么不保存这些值。我也可以在 Parameters: {"utf8"=>"✓", "authenticity_token"=>"0XMjwzMlMLSwqpImXpjTRWd8yHUP/ERTkvnzd9rWIkSA94l9f9bCQdODXrC3SyvmfJjuW/N3zkp5pVZAf+0D+w==", "report_comment"=>{"guide_id"=>"1", "user_id"=>"1", "comment_id"=>"1"}, "commit"=>"Report"} 下添加@report_comment.update(guide_id: params[:report_comment][:guide_id], submitted_by: params[:report_comment][:submitted_by], comment_id: params[:report_comment][:comment_id]),但这并不理想,只是让它们直接从表单提交中保存。

4 个答案:

答案 0 :(得分:1)

将params分配给新方法,然后保存

def report
  @report_comment = ReportComment.new(report_comment_params)
  if @report_comment.save
    redirect_to root_path
   else
     render 'static_pages/home'
   end
 end

答案 1 :(得分:1)

将params值传递给.new Instantiate方法。你不能通过params来保存方法

'%s'.__mod__

或者你可以用户创建方法而不是保存

<method-wrapper '__mod__' of str object at 0x7f92ed464690>

答案 2 :(得分:0)

将params传递给新

@report_comment = ReportComment.new(report_comment_params)
if @report_comment.save

  redirect_to root_path
else
  render 'static_pages/home'
end

答案 3 :(得分:0)

您的控制器错误,您应该传递ReportComment.new中不在.save中的参数:

def report

  @report_comment = ReportComment.new(report_comment_params)
  if @report_comment.save
    redirect_to root_path
  else
    render 'static_pages/home'
  end
end

如果在模型中添加验证,那就更好了。