Rails - params 表单值
Rails - params form value
大家好,我正在为我的 rails 应用寻求帮助:
我不知道为什么我的用户没有被创建,即使我的参数来自我的 simple_form_for,在我的控制器下面:
def create
if current_user == nil
@user = User.create(
phone: params[:temp_phone],
email: params[:temp_email]
first_name: params[:temp_first_name],
password: "test123456"
)
if @user.save
@watch = Watch.new(watch_params)
@watch.user = User.last
else
puts "#{@user.errors.messages}"
end
else
@watch = Watch.new(watch_params)
@watch.user = current_user
end
end
我的观点是这样的
<%= simple_form_for @watch do |f| %>
#DoSomething
<% if current_user == nil %>
<%= f.input :temp_first_name, label: "Name" %>
<%= f.input :temp_email, label: "Email" %>
<%= f.input :temp_phone, label: "Phone" %>
<% end %>
<div class="home-top-btn">
<%= f.button :submit, "Estimer votre montre", class: "btn btn-primary btn-lg" %>
</div>
<% end %>
错误是:email can't be blank
基本上我的目标是 current_user 创建带有 current_user 信息的手表
否则使用来自 simple_form_for 的参数创建用户然后创建 watch
我很确定这不是最好的方法,所以请随时调整我。
提前感谢您的帮助
提交表单时,您可以在 rails 服务器日志中检查 运行 在终端上的参数结构。
它看起来像这样。
{ watch: {
temp_email: "something@localhost.com"
...other details
}
}
注意 watch
键入参数,然后是其他参数的子散列,例如 temp_email
和其他 keys/fields。
这可能会解决您的问题。
尝试在您的 create
操作中替换以下代码。
@user = User.create(
phone: params[:watch][:temp_phone],
email: params[:watch][:temp_email]
first_name: params[:watch][:temp_first_name],
password: "test123456"
)
注意:只有在 @watch
实例变量中确实有 something 时,这才有效。
大家好,我正在为我的 rails 应用寻求帮助:
我不知道为什么我的用户没有被创建,即使我的参数来自我的 simple_form_for,在我的控制器下面:
def create
if current_user == nil
@user = User.create(
phone: params[:temp_phone],
email: params[:temp_email]
first_name: params[:temp_first_name],
password: "test123456"
)
if @user.save
@watch = Watch.new(watch_params)
@watch.user = User.last
else
puts "#{@user.errors.messages}"
end
else
@watch = Watch.new(watch_params)
@watch.user = current_user
end
end
我的观点是这样的
<%= simple_form_for @watch do |f| %>
#DoSomething
<% if current_user == nil %>
<%= f.input :temp_first_name, label: "Name" %>
<%= f.input :temp_email, label: "Email" %>
<%= f.input :temp_phone, label: "Phone" %>
<% end %>
<div class="home-top-btn">
<%= f.button :submit, "Estimer votre montre", class: "btn btn-primary btn-lg" %>
</div>
<% end %>
错误是:email can't be blank
基本上我的目标是 current_user 创建带有 current_user 信息的手表 否则使用来自 simple_form_for 的参数创建用户然后创建 watch
我很确定这不是最好的方法,所以请随时调整我。
提前感谢您的帮助
提交表单时,您可以在 rails 服务器日志中检查 运行 在终端上的参数结构。 它看起来像这样。
{ watch: {
temp_email: "something@localhost.com"
...other details
}
}
注意 watch
键入参数,然后是其他参数的子散列,例如 temp_email
和其他 keys/fields。
这可能会解决您的问题。
尝试在您的 create
操作中替换以下代码。
@user = User.create(
phone: params[:watch][:temp_phone],
email: params[:watch][:temp_email]
first_name: params[:watch][:temp_first_name],
password: "test123456"
)
注意:只有在 @watch
实例变量中确实有 something 时,这才有效。