如何通过提交按钮接受参数

时间:2016-01-01 19:06:11

标签: ruby-on-rails-4

我想保存每次不同提交按钮发送的参数,以便我可以区分它是已发布还是刚保存。

在我看来,

<%= form_for @post do |f| %>
...
<%= f.submit 'Draft', name: "status", value: "draft" %>
<%= f.submit 'Publish', name: "status", value: "publish" %>
<% end %>

当我用“草稿”按钮提交时,我得到如下参数

"post"=>{"title"=>"bar", "body"=>"foo"},
"status"=>"draft",
"controller"=>"posts",
"action"=>"create"}

我的控制器

def new
 @post = Post.new
end

def create
 @post = Post.new(post_params)
 if @post.save
   redirect_to @post
 else
   render 'new'
  end
end

private
 def post_params
  params.require(:post).permit(:title, :body).merge(:status, params[:status])
end

然后我出错了,

wrong number of arguments (2 for 1)

我做错了什么,如何通过草稿/发布参数保存到数据库中?

1 个答案:

答案 0 :(得分:0)

.merge只接受一个参数,这是错误的参数错误来自的地方。尝试合并params [:status]。