Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-params表单值_Ruby On Rails_Erb - Fatal编程技术网

Ruby on rails Rails-params表单值

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],

大家好,我正在寻找rails应用程序的帮助:

我不知道为什么我的用户没有被创建,即使我的控制器下面有简单表单中的参数值:

  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]
。非常感谢您的解释。现在我明白了,我的表格工作得很好。谢谢,很乐意帮忙。