オリジナルアプリを製作中でエラーが出てしまいます。
写真投稿型のアプリで必要項目を選択した後に投稿ボタンを押すとエラーが出てしまいます。
コントローラー内のコードは合っていそうなのですが、うまくいきません。
発生しているエラーメッセージ
ArgumentError in PostsController#create
wrong number of arguments (given 0, expected 1..2)
#該当のソースコード
controller
1def create 2 @post = Post.new(post_params) 3 if @post.save 4 redirect_to root_path(@user) 5 else 6 render :new 7 end 8 end 9 10 private 11 12 def post_params 13 params.require(:post).permit(:image, :name, :genre_id , :allergies [], :store_name, :price, :address, :text).merge(user_id: current_user.id) 14 end 15 16end
ちなみにpermit内の'genre_id'はActiveHashでカテゴリーを選択させ保存するカラム、'allergies[]'は複数チェックボックスを保存させるためのカラムです。複数チェックボックスのカラムはtext型で設定してあります。
model
1class Post < ApplicationRecord 2 has_one_attached :image 3 belongs_to :user 4 5 extend ActiveHash::Associations::ActiveRecordExtensions 6 belongs_to_active_hash :genre 7 8 with_options presence: true do 9 validates :image 10 validates :name 11 validates :genre_id 12 validates :allergies 13 validates :store_name 14 validates :price 15 validates :text 16 end 17 18 with_options numericality: { other_than: 1, message: 'を選択してください' } do 19 validates :genre_id 20 end 21 22 validates :price, numericality: { greater_than: 1, less_than: 9_999_999, message: 'Out of setting range' } 23 validates :price, format: { with: /\A[0-9]+\z/, message: 'Half-width number' } 24 25end
試したこと
モデルにActiveHashのアソシエーションを定義していなかったので、定義。
コントローラー内のcreateアクションの@postの下にbinding.pryを掛けて実行してみたりしました。
結果は変わらずbinding.pryにもかからずにエラーになってしまいます。
エラーメッセージ上でparamsを調べてみると各paramsの値はちゃんと入っている様子。
ただし、定義したインスタンス変数@postにはそれらが入っていない様子でした。
以上になります。
足りない情報等ありましたら、ご指摘宜しくおねがいします!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。