我有一个用户可以创建的Subscription
模型。用户需要验证发送给他们的PIN,以便在创建后确认订阅。我在尝试找出实现它的最佳方法时遇到了一些麻烦。
我实施了一个confirms
控制器,其中包含两个new
和create
个动作。
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
。
答案 0 :(得分:-1)
拨打电话时没有收到参数[:订阅]。 Phone和Pin嵌套在订阅中,因此出错。
<pre>undefined method `[]' for nil:NilClass</pre>
顺便说一句,我不知道如何使用嵌套参数进行卷曲调用。