Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.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 如何使用窗体字段作为控制器方法中的值,并在db中具有相应的列?_Ruby On Rails_Ruby_Forms_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 如何使用窗体字段作为控制器方法中的值,并在db中具有相应的列?

Ruby on rails 如何使用窗体字段作为控制器方法中的值,并在db中具有相应的列?,ruby-on-rails,ruby,forms,ruby-on-rails-4,Ruby On Rails,Ruby,Forms,Ruby On Rails 4,在视图中,我有以下简单的表单: <%= form_for(@invitation, method: :post, url: addinvitation_path) do |f| %> <%= render 'shared/error_messages', object: f.object %> <label for="email", title="email"></label> <%= f.email_field :email,

在视图中,我有以下简单的表单:

<%= form_for(@invitation, method: :post, url: addinvitation_path) do |f| %>
  <%= render 'shared/error_messages', object: f.object %>
  <label for="email", title="email"></label>
  <%= f.email_field :email, required: true %><br>
  <%= f.submit "Submit" %>
<% end %>


将此表单添加到视图后,使用此视图的测试失败:

ActionView::Template::Error: undefined method `email' for #<Invitation:0x0000000baa4e88>
ActionView::Template::错误:未定义的方法“email”#

电子邮件
不是邀请表中的变量,我是否正确地认为这是错误的原因?我只想让email字段/值在controller方法中可用(我将使用它来找到正确的用户)。我该怎么做
(乍一看,使用
表单对(@user
因为该表的
email
字段,但我不希望这样做,因为我将使用表单写入
邀请函
表)

您只能将表单用于对象(“f”)表中有列名。由于电子邮件不是邀请表中的列,因此您需要使用direct field_标记

  <%= email_field_tag :email, required: true %

将使您的控制器可以使用
参数[:email]
。看起来邀请模型中没有电子邮件字段