我需要从我的url中提取一个参数,并将其插入到我的数据库中,以供参考系统使用。
假设这个用户 id = 1
已与其他用户共享其链接,url将为: https://www.example.com/signup?referredBy=1
当新用户创建他的帐户时,我需要该字段 referredBy
要使用来自 referredBy
参数,该参数应为整数。
我已经试过了 @user.referredBy = [:referredBy]
但是没有成功。
感谢您的帮助。
非常感谢你。
编辑
我的 index.html.erb
是:
<% if current_user %>
Logged in as <%= current_user.nomeUsuario %>
<%= link_to "Log out", logout_path %>
<% end %>
<p id=”notice”><%= notice %></p>
<% else %>
<%= link_to "Sign up", signup_path %>
<%= link_to "Log in", login_path %>
<% end %>
我的 new.html.erb
是:
<h1>New User</h1>
<% if current_user %>
<% controller.redirect_to root_url %>
<% else %>
<%= render 'form', user: @user %>
<%= link_to 'Back', login_url %>
<% end %>
我的 _form.html.erb
是:
<%= form_with(model: user) do |form| %>
<% if user.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(user.errors.count, "error") %> prohibited this user from being saved:</h2>
<ul>
<% user.errors.each do |error| %>
<li><%= error.full_message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= form.label :name, "Full Name" %>
<%= form.text_field :nomeUsuario %>
</div>
<div class="field">
<%= form.label :name, "E-mail" %>
<%= form.text_field :email %>
</div>
<div class="field">
<%= form.label :name, "Password" %>
<%= form.password_field :password %>
</div>
<div class="field">
<%= form.label :name, "Password Confirmation" %>
<%= form.password_field :password_confirmation %>
</div>
<div class="field">
<%= form.label :name, "Tipo do Plano" %>
<%= form.select :tipoPlano, ["Gratuito", "Mensal", "Anual"], selected: "Gratuito" %>
</div>
<%= form.hidden_field :indicadoPor, params[:indicadoPor] %>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
我的 user_controller.rb
是:
class UsersController < ApplicationController
before_action :set_user, only: %i[ show edit update destroy ]
# GET /users/new
def new
@user = User.new
end
# GET /users/1/edit
def edit
end
# POST /users or /users.json
def create
@user = User.new(user_params)
set_tipoPlano
@user.indicadoPor = params[:indicadoPor]
respond_to do |format|
if @user.save
format.html { redirect_to root_url, notice: "User was successfully created." }
format.json { render root_url, status: :created, location: @user }
else
format.html { render :new, status: :unprocessable_entity }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /users/1 or /users/1.json
def update
respond_to do |format|
if @user.update(user_params)
set_tipoPlano
format.html { redirect_to root_url, notice: "User was successfully updated." }
format.json { render :show, status: :ok, location: @user }
else
format.html { render :edit, status: :unprocessable_entity }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_user
@user = User.find(params[:id])
end
# Only allow a list of trusted parameters through.
def user_params
params.require(:user).permit(:email, :password, :password_confirmation, :nomeUsuario, :tipoPlano, :valorPlano, :indicadoPor, :comissaoAcumuladaAtual, :comissaoASerRetirada)
end
def set_tipoPlano
if(@user.tipoPlano == "Gratuito")
@user.valorPlano = 0.0
elsif(@user.tipoPlano == "Mensal")
@user.valorPlano = 49.90
elsif(@user.tipoPlano == "Anual")
@user.valorPlano = 39.90
end
end
end
如果你还需要什么,请告诉我!非常感谢你的帮助。
回答如下
我已经修好了。
我只需将表格更改为: <%= form.hidden_field :indicadoPor, value: params[:indicadoPor] %>
我忘了 =
,因此表单没有被呈现。此外,我已经删除了 @user.referredBy = params[:referredBy]
从我的控制器。现在一切都好了。
谢谢你们,姑娘们和非二进制文件到目前为止的帮助!
1条答案
按热度按时间4jb9z9bj1#
这是一个具有单个值的数组。该值是一个符号
:referral
. 我不确定你的referredby列是什么类型的,但它几乎肯定会抱怨被赋予了一系列符号。你想要
params是一个类似散列的对象,包含url/(有时是正文)中的参数。所以
params[:referral]
查阅:referral
符号,并返回用户提供的任何内容。