Ruby on rails 为响应(@object)的模型实现特定操作
我有一个用户可以创建的Ruby on rails 为响应(@object)的模型实现特定操作,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有一个用户可以创建的订阅模型。创建订阅后,用户需要验证发送给他们的PIN以确认订阅。我在试图找出实现这一点的最佳方法时遇到了一些困难 我用两个new和create操作实现了一个confirmation控制器 def new @confirm = Subscription.new end def create @keyword = Keyword.joins(:shortcode).where("shortcodes.shortcode = ? and shortcodes.count
订阅
模型。创建订阅后,用户需要验证发送给他们的PIN以确认订阅。我在试图找出实现这一点的最佳方法时遇到了一些困难
我用两个new
和create
操作实现了一个confirmation
控制器
def new
@confirm = Subscription.new
end
def create
@keyword = Keyword.joins(:shortcode).where("shortcodes.shortcode = ? and shortcodes.country = ?",params[:subscription][:shortcode],params[:subscription] [:country]).find_or_create_by_keyword(params[:subscription][:keyword])
if @confirm = Subscription.where(:phone => params[:subscription][:phone], :country => params[:subscription][:country], :keyword_id => @keyword.id).last
@confirm.check_subscription_pin(params[:subscription][:pin])
respond_with(@confirm)
elsif @confirm && @confirm.errors.any?
flash[:notice] = @confirm.errors
render :action => :new
else
flash[:notice] = "Subscription not found."
render :action => :new
end
end
这个解决方案看起来不是很有说服力,因为我总是希望
用(@confirm)
来响应,以允许RESTPOST
通过JSON
完成 当您进行curl调用时,没有收到参数[:subscription]。电话和Pin嵌套在订阅中,因此会出现错误
nil:NilClass的未定义方法“[]”
顺便说一句,我不知道如何使用嵌套参数进行curl调用。对于这种情况,您可以提出什么设计建议?尝试将文本字段改为text\u field\u tag“phone”,而不是f.text\u field:phone。因此,在控制器中,您将手机作为params[:phone],而不是params[:subscription][:phone]。但这意味着您必须手动更改subscrption对象的创建。
<pre>undefined method `[]' for nil:NilClass</pre>