0

submitラジオボタンを使用する代わりに、ブール属性を変更するボタンを使用する方法を知りたかったのです。

例として、「公開済み」および「未公開」の記事投稿のリストをページに表示し、モデルPost#indexの :is_published フィールドを true に設定する「公開」というボタンが必要だとします。Post

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

前もって感謝します。

更新 質問に対応するモデルとビューを追加しました。お役に立てば幸いです。

4

1 に答える 1

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|
  ...
于 2013-08-26T21:17:29.287 に答える