我正在关注 ryan bates 的屏幕截图 http://railscasts.com/episodes/219-active-model关于如何在没有数据库的情况下验证表单
但我总是得到一个未定义的方法有效?
这是我的 Controller
def create
@contacts = FreshDeskApiWrapper.new().post_tickets(params[:contacts])
if @contacts.valid?
redirect_to new_contact_path
else
flash[:notice] = "OOps"
render action: 'new'
end
结束
我好像可以打电话
$ FreshDeskApiWrapper.new().valid?
在控制台中很好,但当我添加时它似乎不喜欢它
$ FreshDeskApiWrapper.new().post_tickets(params[email: 'user@example.com']).valid?
我得到一个未定义的方法有效吗?
我对此有些不理解
这是我在模型文件夹中创建的 fresh_desk_api_wrapper.rb 文件
class FreshDeskApiWrapper
include ActiveModel::Validations
include ActiveModel::Conversion
extend ActiveModel::Naming
attr_accessor :config, :client, :subject, :email, :custom_field_phone_number_50754, :custom_field_company_50754, :description
validates :subject, presence: true
validates :email, presence: true
validates_format_of :email, :with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
self.config = YAML.load_file("#{Rails.root}/config/fresh_desk.yml")[Rails.env]
self.client = Freshdesk.new(config[:url], config[:api_key], config[:password])
end
def post_tickets(params)
client.post_tickets(params)
end
def persisted?
false
end
end
post_tickets 是我在那里定义的东西
最佳答案
您可以在一个对象的单个实例上调用 valid?
,而不是多个。 @contacts
将暗示您的 post_tickets
方法正在返回多个对象。
关于ruby-on-rails - ruby on rails - 未定义的方法有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18168404/