如何将此转换为form_tag?该代码基本上来自Michael Hartl的RoR教程第8章练习1
<% provide(:title, "Sign in") %>
<h1>Sign in</h1>
<div class="row">
<div class="span6 offset3">
<%= form_for(:session, url: sessions_path) do |f| %>
<%= f.label :email %>
<%= f.text_field :email %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.submit "Sign in", class: "btn btn-large btn-primary" %>
<% end %>
<p>New user? <%= link_to "Sign up now!", signup_path %></p>
</div>
</div>
我试过这样的事情
<% provide(:title, "Sign in") %>
<h1>Sign in</h1>
<div class="row">
<div class="span6 offset3">
<% form_tag sessions_path, methods=> :post do %>
<%= label_tag 'email' %><br />
<%= text_field_tag :email, params[:email], :placeholder => "Email" %>
<%= label_tag 'password' %><br />
<%= password_field_tag :password %>
<%= submit_tag 'Sign in' %>
<% end -%>
<p>New user? <%= link_to "Sign up now!", signup_path %></p>
</div>
</div>
但它根本没有显示表格。
由于
答案 0 :(得分:2)
您需要添加一个等号:
<%= form_tag sessions_path, methods=> :post do %>
但是,我想知道你为什么要切换到form_tag
。 form_for
在我看来有许多优点,例如:表单构建器。
答案 1 :(得分:0)
我也在尝试转换为form_tag。
更正语法
<%= form_tag sessions_path, :method => 'post' do %>
语法不正确
<% form_tag sessions_path, methods=> :post do %>
您需要在开始的embed标记中添加'=',将方法更改为:方法,然后:发布到'post'
使用form_for vs form_tag的原因在另一个堆栈溢出线程中讨论。
需要进行的另一项更改是在sessions_controller.rb中。传回的哈希不会被控制器识别,因为它被设置为接受来自form_for方法的哈希。您必须在两行中删除第一个[:session]哈希。你的sessions_controller.rb应该是这样的,
def create
user = User.find_by(email: params[:email].downcase)
if user && user.authenticate(params[:password])
sign_in user
redirect_to user
else
flash.now[:error] = 'Invalid email/password combination'
render 'new'
end
end
答案 2 :(得分:0)
接下来将是教程的代码(Michael Hartl 3.2)第8章。练习1
<% provide(:title, "Sign in") %>
<h1>Sign in</h1>
<div class="row">
<div class="span6 offset3">
<%= form_tag sessions_path, :method => 'post' do %>
<%= label_tag 'email', 'Email' %>
<%= text_field_tag :email, params[:email], :placeholder => "Email" %>
<%= label_tag 'password', 'Password' %>
<%= password_field_tag :password %>
<br>
<%= submit_tag "Sign In" , :class=> "btn btn-large btn-primary" %>
<% end %>
<p>New user? <%= link_to "Sign up now!", signup_path %></p>
</div>