来自URL的参数未保存在DB中

时间:2015-08-17 20:53:35

标签: ruby-on-rails ruby devise

所以我正在创建一个简单的推荐跟踪系统。用户会将网址发布给看起来像http://localhost:3000/users/sign_up?referral=2的朋友。然后,该推荐代码将用于新用户注册中的隐藏输入,但我似乎无法将其保存。当我检查页面时,我可以看到值,但是没有保存。另外,我用这个作为指导。 http://www.ytutorial.com/tutorials/2-rails-referral-affiliate-tracking

视图/设计/注册/ new.html.erb

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :role => 'form',
      :class => 'payola-onestep-subscription-form',
      'data-payola-base-path' => payola_path,
      'data-payola-plan-type' => resource.plan.plan_class,
      'data-payola-plan-id' => resource.plan.id}) do |f| %>
  <%= f.hidden_field :referral_code, :as => :hidden, :input_html => { :value => session[:referral] } %>

应用程序/控制器/ application_controller.rb

before_filter :capture_referal
private
def capture_referal
  session[:referral] = params[:referral] if params[:referral]
end

应用程序/控制器/ registrations_controller.rb

def sign_up_params
  params.require(:user).permit(:email, :password, :password_confirmation, :plan_id, :size, :street1, :street2, :city, :state, :zip, :referral_code)
end

1 个答案:

答案 0 :(得分:1)

使用默认表单构建器的隐藏字段标记的语法是

<%= f.hidden_field :referral_code, value: session[:referral] %>