Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为响应(@object)的模型实现特定操作_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

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)
来响应,以允许REST
POST
通过
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>