【问题标题】:Parameter from URL not saving in DB来自 URL 的参数未保存在数据库中
【发布时间】:2015-08-18 05:14:05
【问题描述】:

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

views/devise/registration/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] } %>

app/controllers/application_controller.rb

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

app/controllers/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

【问题讨论】:

  • 你在使用 simple_form_for 吗?
  • 不,我更新了视图供您查看。
  • &lt;%= f.hidden_field :referral_code, :as =&gt; :hidden, :input_html =&gt; { :value =&gt; session[:referral] } %&gt; 应该是&lt;%= f.hidden_field :referral_code, value: session[:referral] %&gt;
  • 你制作隐藏标签的方式是 simple_form_for 做事的方式,除了它可能是'f.input'而不是'f.hidden_​​field',这可能是你的问题。 github.com/plataformatec/simple_form V. api.rubyonrails.org/classes/ActionView/Helpers/…
  • @dhouty 你把它撞出了公园。如果您将其添加为答案,请投反对票

标签: ruby-on-rails ruby devise


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-02-14
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    相关资源
    最近更新 更多