我想知道如何使用submit
按钮更改布尔属性,而不是使用单选按钮。
例如,如果我在Post#index
页面上显示“已发布”和未发布的文章帖子列表,我想要一个名为“发布”的按钮,在Post
上设置:is_published字段模型为真。
我在Rails 3.2.13上使用strong_parameters
我在Post
控制器中思考
def index
@post = Post.recent
end
def update
@post = Post.find_by_slug(params[:id])
if params[:publish_button]
@post.is_published = true
@post.save
redirect_to root_path
end
end
private
def post_params
params.require(:person).permit(:body, :publish_button)
end
在我的Post#index
视图中,我有form_for
<%= f.submit 'Publish', name: publish_button %>
以下是Post#index
<%= form_for @post do |f| %>
<div class="field">
<%= f.label :body %><br />
<%= f.text_field :body %>
</div>
<div class="actions">
<%= f.submit %>
<%= f.submit_tag 'Publish Post', name: 'publish_post' %>
</div>
<% end %>
简单模型如下
class Post < ActiveRecord::Base
include ActiveModel::ForbiddenAttributesProtection
scope :recent, -> { order('updated_at DESC') }
end
但我收到了Required parameter missing: post
提前致谢。
更新 我添加了一个与问题相对应的模型和视图。我希望它有所帮助。
答案 0 :(得分:0)
将您的值作为隐藏字段传递,例如
= form_for @post do |f|
= f.hidden_field :is_published, value: "1"
= f.submit "Publish"
如果你希望它像button_to一样内联,请给它button_to类:
= form_for current_user.profile, html: { class: 'button_to' } do |f|
...