2016-11-11 31 views
0

我想要一个像这样的表单,因为我只想使用:pass_value将值传递给控制器​​中的其他属性。但它不起作用。你能否提供一个正确的方法来做到这一点?Rails我可以使用窗体标签里面的形式吗?

<% form_for @person do |f| %> 
    <%= f.text_field :name %> 
    <%= text_tag :pass_value %> 
    <%= f.submit %> 
<% end %> 

回答

1

你cannnot使用的form_tag另一个表单中。但是如果你想传递:pass_value的值实际上不作为属性,请尝试使用虚拟属性。您可以使用:attr_accessor方法。

2

不,您不能在窗体中使用窗体标签。但是你可以使用的一个:

一)fields_for

如果这是一个嵌套的模型,你可以使用它像:

fields_for :widget do |g| 
    g.text_field :widget_name 
end 

DOC为fields_for:http://apidock.com/rails/ActionView/Helpers/FormHelper/fields_for

B) text_field_tag

如果它只是一个独立的字段

<%= text_field_tag :some_value %> 

DOC为text_field_tag: http://apidock.com/rails/ActionView/Helpers/FormTagHelper/text_field_tag

+0

感谢您的帮助后,使用原始的HTML标记,如

input type="hidden" name="person[pass_value]" [email protected]_value 

它只是HTML表单。第二种解决方案可以解决我的问题,但问题是如果我有四个文本字段,比方说他们是姓名,pass_value,年龄,地址。 pass_value只是用来传递值,而不是模型的属性。另外,我希望pass_value排在第二位。但是如果我使用text_field_tag,我认为传递值只能放在表单之前或之后。 –

+0

否,文本字段标记始终放置在表单内或不起作用。你可以像使用'f.text_field'一样使用它,并且可以将它放置在任何你喜欢的地方 - 如果你想要的话可​​以放在其他字段中。 –

相关问题