Ruby on rails 如何将对象从表单_for helper传递到方法?
假设我有一个表单被发送到一个陌生的地方(我们所说的陌生是指,不是默认的路径:Ruby on rails 如何将对象从表单_for helper传递到方法?,ruby-on-rails,Ruby On Rails,假设我有一个表单被发送到一个陌生的地方(我们所说的陌生是指,不是默认的路径: <% form_for @form_object, :url => {:controller => 'application', :action => 'form_action_thing'} do |f| %> <%= f.text_field :email %> <%= submit_tag 'Login' %> &l
<% form_for @form_object, :url => {:controller => 'application',
:action => 'form_action_thing'} do |f| %>
<%= f.text_field :email %>
<%= submit_tag 'Login' %>
<% end %>
因此,我的问题是:
@form\u object
可供接收方法使用(在本例中为form\u action\u tag
)?
- 我试过
,我也搜索过API,我必须在下面发布,因为SO不相信我不是垃圾邮件发送者(我是新成员),也在谷歌上搜索了尽可能多的这个想法的排列。没什么。抱歉,如果我错过了什么,我真的在尝试params[:form_object]
params[:form_object]
我承认,不知道看起来如此明显的东西有点令人沮丧…你需要在url中传递“@form\u对象”的“id”,然后查找该对象(假设你有一个模型并使用ActiveRecord)你需要在url中传递“@form\u对象”的“id”,然后查找该对象(假设您有一个模型并使用ActiveRecord)这取决于您如何设置路由。如果您使用默认的/:controller/:action/:id路由,则可以将其作为URL中的参数传递。请注意,不能/应该传递整个@form_对象,而应该传递它的id或某些其他属性来标识它。在这种情况下,您应该使URL:
<% form_for @form_object, :url => {:controller => 'application',
:action => 'form_action_thing', :email => some_email} do |f| %>
<%= f.text_field :email %>
<%= submit_tag 'Login' %>
<% end %>
这取决于您如何设置路由。如果您使用默认的/:controller/:action/:id路由,您可以将其作为URL中的参数传递。请注意,不能/不应该传递整个@form_对象,但它是标识它的id或其他一些属性。在这种情况下,您应该将URL设置为:
<% form_for @form_object, :url => {:controller => 'application',
:action => 'form_action_thing', :email => some_email} do |f| %>
<%= f.text_field :email %>
<%= submit_tag 'Login' %>
<% end %>
您可以通过url传递参数,但在提交表单时,唯一应该(可能)通过url传递的是RESTful记录的记录id 而且您似乎还没有在
参数中找到表单数据的位置
所以
- 表单中的所有数据都应该以
参数[:form\u object]
结束。:form\u object
的实际值由Rails选择,它可能来自对象的类(现在懒得查找)
- 在任何情况下,您都可以通过查看控制台/日志输出轻松找到表单值的提交位置。每个请求的所有参数都转储在那里
- 表单字段将位于参数内,如
params[:form_object][:email]
-提交的每个字段都有一个与字段名对应的条目
参数
散列不包含@form_对象
中的所有原始值。表单中将只包含这些值
- 如果需要将不可编辑的值与表单一起传递给控制器,请使用
隐藏字段
(s)。这些值将与表单一起提交,但用户不可见
您可以通过url传递参数,但在提交表单时,唯一应该(可能)通过url传递的是RESTful记录的记录id
而且您似乎还没有在参数中找到表单数据的位置
所以
- 表单中的所有数据都应该以
参数[:form\u object]
结束。:form\u object
的实际值由Rails选择,它可能来自对象的类(现在懒得查找)
- 在任何情况下,您都可以通过查看控制台/日志输出轻松找到表单值的提交位置。每个请求的所有参数都转储在那里
- 表单字段将位于参数内,如
params[:form_object][:email]
-提交的每个字段都有一个与字段名对应的条目
参数
散列不包含@form_对象
中的所有原始值。表单中将只包含这些值
- 如果需要将不可编辑的值与表单一起传递给控制器,请使用
隐藏字段
(s)。这些值将与表单一起提交,但用户不可见
这是我看过的另一个网站:这是我看过的另一个网站:如果你在定义电子邮件输入字段,你不必在:url
中将其定义为参数。啊,我明白了,非常感谢。有时我会觉得我不知道这些事情很傻。鉴于你的答案很简单,我似乎可以找到它你自己。我可以问一下你会在哪里查找吗?是的,我没有注意到f.text_字段:email
param。这让我问:如果你发送表单对象,你为什么需要在控制器中通过电子邮件查找表单对象?你可以在Rails指南中找到更多关于表单帮助者的信息()。如果您是Rails新手,则非常推荐此指南:)如果你要定义电子邮件输入字段,你不必在:url
中将其定义为参数。啊,我明白了,真的非常感谢。有时我会觉得自己不知道这些事情很傻。考虑到你答案的简单性,我似乎可以自己找到它。我可以问一下你会在哪里找到它吗?是的,我没有注意到f。text_field:email
param。这让我不禁要问:如果你想编辑或创建一个FormObject,为什么你需要在控制器中通过电子邮件查找它?你可以在Rails指南()中找到更多关于表单助手的信息。如果你是Rails新手,建议你使用此指南:)谢谢
def form_action_thing
@user = User.find_by_email(params[:email])
end