送信する前に、存在を検証したいフォームに 2 つのフィールドがあります。ただし問題は、コントローラーのモデルにはデータベースにこれらのフィールドがないため、仮想属性を作成してみました。ただし、それを機能させる方法はよくわかりません。
「Find_number」と呼ばれるモデルでこれを実行してみました
class FindNumber < ActiveRecord::Base
attr_accessor :name
attr_accessor :original_number
validates :name, presence: true
validates :original_number, presence: true
end
Find_numbers コントローラーの create アクション内の以下
def create
@user = current_user
client = Twilio::REST::Client.new(@user.twilio_account_sid, @user.twilio_auth_token)
search_params = {}
%w[in_postal_code near_number contains].each do |p|
search_params[p] = params[p] unless params[p].nil? || params[p].empty?
end
local_numbers = client.account.available_phone_numbers.get('US').local
@numbers = local_numbers.list(search_params)
if :name.valid? && :original_number.errors.any?
unless @numbers.empty?
render 'find_numbers/show'
else
flash.now[:error] = "Sorry, We Couldn't Find Any Numbers That Matched Your Search! Maybe Something Simpler?"
render 'find_numbers/new'
end
else
flash.now[:error] = "Sorry, We Couldn't Find Any Numbers That Matched Your Search! Maybe Something Simpler?"
render 'find_numbers/new'
end
end
情報を入力すると、エラーが発生します
undefined method `valid?' for :name:Symbol
:name 属性と :original_number 属性を間違って呼び出している可能性があります。また、二重の if then ステートメントは非常に新しく見えます :P.
:name.valid の場合、何を置き換える必要がありますか? && :original_number.errors.any? 、それが検証されることを確認するには?それとも、私が見逃しているものがもっとたくさんありますか?