こんにちは。
下記のようにf.text_fieldを使用して、
複数の入力されたタグを配列としてparamsに送りたいのですが、うまくいきません。
(ビューファイル)
Ruby
1<%= form_for(@post, url: dairy_index_path, html: {method: :post}) do |f| %> 2 3<% if @post.errors.any? %> 4 5<% @post.errors.full_messages.each do |message| %> 6<li><%= message %></li> 7<% end %> 8 9<% end %> 10 11<label> 12<%= f.text_field :tag, maxlength: 20, placeholder: "タグ1(最大20文字)" %> 13<%= f.text_field :tag, maxlength: 20, placeholder: "タグ2(最大20文字)" %> 14<%= f.text_field :tag, maxlength: 20, placeholder: "タグ3(最大20文字)" %> 15<%= f.text_field :tag, maxlength: 20, placeholder: "タグ4(最大20文字)" %> 16<%= f.text_field :tag, maxlength: 20, placeholder: "タグ5(最大20文字)" %> 17</label> 18 19<% end %> 20
(コントローラー)
Ruby
1def create 2 newdairy = Dairy.create!(dairy_params) 3 4private 5def dairy_params 6 params.require(:dairy).permit(:tag) 7end 8
上記で@postはdairyモデルのインスタンスです。
<%= f.text_field :tag[]・・%>
とすれば良いかと思ったのですが、argument errorが返ってきます。
直接htmlで<input type="text" name="tag[]"・・>
と記述していた時はうまく行ったのですが。
f.text_fieldだとparamsにハッシュが送られているので、
配列は送れないのでしょうか??
今ひとつ良くわかっておらず。
解決方法を教えていただきたく、よろしくお願いします。
(以下追記)
◼️dairyモデルの記述
Ruby
1class Dairy < ActiveRecord::Base 2 3 belongs_to :user 4 has_and_belongs_to_many :tags 5 6 serialize :tag 7 8 validates :text, presence: true 9 validates :title, presence: true, length: {mininum: 1, maximum: 100 } 10 validate :tag_content? 11 validate :tag_length? 12 13private 14 def tag_length? 15... 16 end 17 18 def tag_content? 19 ... 20 end 21 22end
dairyテーブルのカラムとしてはtitle,text,tagがあります。
dairyモデルはuser,tagモデルと関連付いています。
回答1件
あなたの回答
tips
プレビュー