如何在 rails 上从 link ruby 获取参数?
How get params from link ruby on rails?
我的用户模型中有列 inviter
。我想从 link 获取参数并将其保存在 cookie 中。例如,从这个 link:
domain.com/?ref=5
我要保存到 cookies 数 ?ref=**5**
并且当用户去注册时,用户将不需要在表单中写入推荐号码,因为它已经在 cookie 中。
<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.label :name,'Your name'%>
<%= f.text_field :name, class: 'form-control' %>
<%= f.label :email,'Email' %>
<%= f.email_field :email, class: 'form-control' %>
<%= f.label :invite, 'Number who invited you' %>
<%= f.text_field :invite, class: 'form-control' %>
<%= f.label :password, 'password' %>
<%= f.password_field :password, class: 'form-control' %>
<%= f.label :password_confirmation ,'password confirmation' %>
<%= f.password_field :password_confirmation, class: 'form-control' %>
<br>
<br>
<div class="textc">
<%= f.submit yield(:button_text), class: "formbut" %>
</div>
<% end %>
邀请号码将使用?ref=**5**
注册新用户
将这样的内容添加到您的 application_controller.rb
:
before_action :store_ref
private
def store_ref
cookies[:ref] = params[:ref] if params[:ref].present?
end
并向您的用户创建这样的操作:
def create
@user = User.new(user_params)
@user.ref = cookies[:ref]
if @user.save
# ...
更好的方法是使用隐藏输入并用 params[:ref]
中的值填充它。
class UsersController < ApplicationController
def new
@user = User.new do |u|
if params[:ref].present?
u.inviter = params[:ref]
end
end
end
# ...
end
<%= form_for(@user) do |f| %>
# ...
<% if f.object.inviter.present? %>
<%= f.hidden_field :inviter %>
<% end %>
<% end %>
它需要较少的解决方法。
我的用户模型中有列 inviter
。我想从 link 获取参数并将其保存在 cookie 中。例如,从这个 link:
domain.com/?ref=5
我要保存到 cookies 数 ?ref=**5**
并且当用户去注册时,用户将不需要在表单中写入推荐号码,因为它已经在 cookie 中。
<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.label :name,'Your name'%>
<%= f.text_field :name, class: 'form-control' %>
<%= f.label :email,'Email' %>
<%= f.email_field :email, class: 'form-control' %>
<%= f.label :invite, 'Number who invited you' %>
<%= f.text_field :invite, class: 'form-control' %>
<%= f.label :password, 'password' %>
<%= f.password_field :password, class: 'form-control' %>
<%= f.label :password_confirmation ,'password confirmation' %>
<%= f.password_field :password_confirmation, class: 'form-control' %>
<br>
<br>
<div class="textc">
<%= f.submit yield(:button_text), class: "formbut" %>
</div>
<% end %>
邀请号码将使用?ref=**5**
注册新用户
将这样的内容添加到您的 application_controller.rb
:
before_action :store_ref
private
def store_ref
cookies[:ref] = params[:ref] if params[:ref].present?
end
并向您的用户创建这样的操作:
def create
@user = User.new(user_params)
@user.ref = cookies[:ref]
if @user.save
# ...
更好的方法是使用隐藏输入并用 params[:ref]
中的值填充它。
class UsersController < ApplicationController
def new
@user = User.new do |u|
if params[:ref].present?
u.inviter = params[:ref]
end
end
end
# ...
end
<%= form_for(@user) do |f| %>
# ...
<% if f.object.inviter.present? %>
<%= f.hidden_field :inviter %>
<% end %>
<% end %>
它需要较少的解决方法。