モデルでパラメータを受け取る方法について。
毎回お世話になっています。現在、データベースと無関係なモデルをお問い合わせフォームで作りました。
そのお問い合わせは他にもいくつか作らなきゃいけないのですが、validateが異なるので異なるvalidateにかけるために
そのまえのformのページでhidden_fieldとしてデータを埋め込みました。
ruby
1_form_reservation.html.erb 2 3<% @inquiry.number = 1 %> 4<%= f.hidden_field :number, :value => @inquiry.number %> 5
そして、モデルで分岐しようと思うのですが、Parameterを受け取ることができません。
ruby
1class Inquiry 2 include ActiveModel::Model 3 4 attr_accessor :detail_id,:name,:name_kana, :email,:email_confirmation, :message,:contents,:address,:zip1,:zip2,:phone, :mobile,:fax,:contact_time,:contact_method,:occupation,:reserve_date,:shop_id,:agreement,:number 5 6 7 if :number == 1 8 validates :contents, :presence => {:message => 'お問い合わせ項目を入力してください'} 9 validates :name, :presence => {:message => '名前を入力してください'} 10 validates :name_kana,:presence => {:message => '名前を入力してください'}, 11 format: { with: /\A[\p{katakana}\s]+\z/,:message => 'お名前(フリガナ)はカタカナで入力してください' } 12 validates :zip1, :presence =>{:message => '郵便番号を入力してください。'}, 13 numericality: { only_integer: true, greater_than_or_equal_to: 0,:message => '郵便番号は半角で0以上で入力してください' } 14 validates :zip2, :presence =>{:message => '郵便番号を入力してください。'}, 15 numericality: { only_integer: true, greater_than_or_equal_to: 0,:message => '郵便番号は半角で0以上で入力してください' } 16 validates :address,:presence =>{:message => '住所を入力してください'} 17 validates :email, :presence => {:message => 'emailを入力してください'}, :confirmation => { :message => 'メールアドレスは同じにしてください。'}, 18 format: { with: /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i, :message => 'emailを正しく入力してください'} 19 validates :email_confirmation, :presence => {:message => 'email(確認用)を入力してください'}, 20 format: { with: /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i, :message => 'email(確認用)を正しく入力してください' } 21 validates_acceptance_of :agreement, message: '「利用規約および個人情報の取扱に同意する」にチェックを入れてください。' 22 end 23 24 25end 26
Parameters:
{"utf8"=>"✓",
"authenticity_token"=>"xxx",
"inquiry"=>{"shop_id"=>"1",
"reserve_date"=>"",
"name"=>"名前",
"name_kana"=>"ナマエ",
"zip1"=>"xxx",
"zip2"=>"xxxx",
"address"=>"xxxxxxxxx",
"email"=>"xxxx@yahoo.co.jp",
"email_confirmation"=>"xxxx@yahoo.co.jp",
"phone"=>"xxxxx",
"message"=>"eee",
"number"=>"1",
"agreement"=>"1"},
"commit"=>"確認画面へ"}
こんな感じで、numberを受け取ることには成功しているのですが、:numberでは分岐にひっかからないですし、paramsをつくったらエラーが出てしまいます。どういう風にやればvalidateで分岐することができるでしょうか。
PS.
エラー画面でコンソールを打ってみたところ,:numberは:numberとのみ表示されました。
モデルってどういう風にデータを受け取るのかがわかっていないのかなと思います...。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/12 10:42
2016/10/12 10:50
2016/10/13 02:03