Rails中的以下行是否为简单形式
<%= form_tag(:action => 'attempt_login') do %>
与Rails表单助手中的以下内容相同?
{{1}}
如果没有,你能告诉我它会是什么吗?我需要重做一些表单代码,我想在运行应用程序之前写下正确的语法... 对于传递参数(即:动作)的情况,简单形式文档是相当模糊的。 谢谢!
答案 0 :(得分:2)
form_for
通常用于特定记录,以便update
或create
。
示例:
# view in HAML (not ERB)
= form_for @user do |f|
= f.text_field :username
# matched with the routes
resources :users
嵌套资源的其他示例:
# routes.rb
resources :users do
resources :posts
end
# view in HAML
= form_for [@user, @post] do |f|
= f.text_field :content
由于您将记录作为form_for
方法的参数,因此可以“预先填充”记录的某些字段,即@user
已经具有{{1}的值},该字段将填充该用户名。
确实你可以为username
指定一个的行为,如下所示:
form_for
= form_for @user, url: { action: :custom_action } do |f|
用于“其他表单”,例如form_tag
表单或特定控制器要执行的操作。
示例:
login
总结,如果您实际在表单中使用模型的实例并尝试修改/创建它,我会(基于我的观点)使用# view in HAML
- form_tag action: :login do
= text_field_tag :username
= password_field_tag :password
帮助程序。所以在您的情况下,我不会使用form_for
帮助程序,而是使用form_for
代替(因为您需要登录表单)。
答案 1 :(得分:0)
我最近将form_tag方法迁移到form_for,因为form_for用于使用bootstrap格式化我的表单的gem中。这是一个没有模型的登录表单。以下是我在没有模型的情况下使用form_for的方法:
<%= form_for(:login, :action => 'attempt_login') do %>
我认为这也适用于simple_form:
<%= simple_form_for(:login, :action => 'attempt_login') do %>
我没有使用form_tag
,而是因为宝石没有装饰它,我使用了form_for
而:symbol
而不是@model