0

我有一个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)希望允许 RESTPOST通过JSON.

4

1 回答 1

-1

当您拨打 curl 电话时,没有收到 params[:subscription] 。Phone 和 Pin 嵌套在订阅中,因此出现错误。

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

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

于 2012-06-06T18:56:55.897 回答