1

simple_form チェックボックスとacts_as_taggable_on gemを使用して投稿にタグを追加しようとしています。すでにいくつかの質問がありますが、機能する方法を見つけることができませんでした。次のタグ オプションが必要です: 世界、政治、技術、スポーツ。

今、私はこれを_formに持っています:

 <%= f.label :tag_list %>
<%= f.check_box :tag_list, { :multiple => true }, 'world', nil %>
<%= f.check_box :tag_list, { :multiple => true }, 'politics', nil %>
<%= f.check_box :tag_list, { :multiple => true }, 'tech', nil %>
<%= f.check_box :tag_list, { :multiple => true }, 'sports', nil %>

投稿モデルにこれがあります:

acts_as_taggable

そしてここにコントローラーがあります:

 def index
  if params[:tag]
  @posts = Post.tagged_with(params[:tag])
 else
 @posts = Post.all
 end
end

とビュー:

<%= raw post.tag_list.map { |t| link_to t, tag_path(t) }.join(', ') %>

問題は、チェックボックスをクリックすると、そのタグが投稿に保存されないことです。標準の「コンマで区切って独自のタグを追加する」を使用すると、すべてが機能します。

4

4 に答える 4

0

しばらく経ちましたが、最近同じ問題に遭遇し、解決策を投稿すると思いました。Rails 5.0.0とacts-as-taggable-onを使用すると、まったく同じ問題が発生しました.f.text_fieldを使用すると、すべてのタグとタグ付けがうまく保存されますが、:multiple => trueでf.check_boxに変更するとすぐに、何も保存されませんでした。

解決策は強力なパラメーターでした。text_field によって送信されたパラメーターは次のようになるためです。

"blog_post"=>{"tag_list"=>"tech, sports"}

チェックボックスフォームによって送信されたパラメーターは次のようになります。

"blog_post"=>{"tag_list"=>["tech", "sports"]}

次に、コントローラーの強力なパラメーターを編集する必要があります

params.require(:blog_post).permit(:foo, :tag_list)

params.require(:blog_post).permit(:foo, :tag_list => [])

送信される配列を許可します。

于 2016-08-05T05:23:52.990 に答える