Ruby on rails Rails-params表单值
大家好,我正在寻找rails应用程序的帮助: 我不知道为什么我的用户没有被创建,即使我的控制器下面有简单表单中的参数值:Ruby on rails Rails-params表单值,ruby-on-rails,erb,Ruby On Rails,Erb,大家好,我正在寻找rails应用程序的帮助: 我不知道为什么我的用户没有被创建,即使我的控制器下面有简单表单中的参数值: def create if current_user == nil @user = User.create( phone: params[:temp_phone], email: params[:temp_email] first_name: params[:temp_first_name],
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 %>
#剂量
错误为:电子邮件不能为空
基本上,我的目标是如果当前用户使用当前用户信息创建手表
否则,请使用简单表单中的参数创建用户,然后创建手表
我很确定这不是最好的方式,所以请随时调整我
提前感谢您的帮助提交表单时,您可以检查终端上运行的rails服务器日志中的参数结构。 看起来是这样的
{观察:{
临时电子邮件:something@localhost.com"
……其他细节
}
}
请注意,watch
输入参数,然后对其他参数(如temp_email
和其他键/字段)进行子哈希。
这是解决您的问题的方法。
尝试在create
操作中替换以下代码
@user=user.create(
电话:params[:watch][:temp_phone],
电子邮件:params[:watch][:temp_email]
first_name:params[:watch][:temp_first_name],
密码:“test123456”
)
注意:只有在
@watch
实例变量中确实有一个something时,这才有效。为什么您认为它们没有被传递?尝试在方法开始时打印params
。或者,更好的是,只需查看终端中的请求日志,作为标准rails日志的一部分,参数应该已经打印在那里了。Hello@SergioTulentsev谢谢您的回答,老实说,我的问题是错误的。我可以看到我的参数
,但我不明白为什么我的用户不是用这个参数创建的。它总是说电子邮件不能为空
,但在params中我有:带有正确值的临时电子邮件“但在params中我有:带有正确值的临时电子邮件”-不,你没有。正如我在评论中所暗示并在下面的回答中所展示的,它是params[:watch][:temp\u email\u with]
,而不是params[:temp\u email\u with]
。非常感谢您的解释。现在我明白了,我的表格工作得很好。谢谢,很乐意帮忙。