为respond_with(@object)模型实现特定操作

时间:2012-06-06 18:49:00

标签: ruby-on-rails ruby-on-rails-3

我有一个用户可以创建的Subscription模型。用户需要验证发送给他们的PIN,以便在创建后确认订阅。我在尝试找出实现它的最佳方法时遇到了一些麻烦。

我实施了一个confirms控制器,其中包含两个newcreate个动作。

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

此解决方案看起来不太令人信服,因为我希望始终respond_with(@confirm)允许通过POST完成REST JSON

1 个答案:

答案 0 :(得分:-1)

拨打电话时没有收到参数[:订阅]。 Phone和Pin嵌套在订阅中,因此出错。

<pre>undefined method `[]' for nil:NilClass</pre>

顺便说一句,我不知道如何使用嵌套参数进行卷曲调用。