RoR - 关闭form_tag

时间:2009-12-14 01:31:06

标签: ruby-on-rails ruby

如何关闭form_tag?这是我的代码:

<%= form_tag :action => 'authenticate' %>
<h1>Already a member?</h1>
<table>
  <tr>
    <td>Username*: </td>
    <td><%= text_field("userform", "user_name", :size => "20", :class => "field") %></td>
  </tr>
  <tr>
    <td>Password*: </td>
    <td><%= password_field("userform", "password", :size => "20", :class => "field") %></td>
  </tr>
  <tr>
    <td></td><td><input type="submit" value="Login" class="form_button" /></td>
  </tr>
</table>

<hr />

<%= form_tag :action => 'register' %>
<h1>Register</h1>
<table>
  <tr>
    <td>Username*: </td>
    <td><%= text_field("userform", "user_name", :size => "20", :class => "field") %></td>
  </tr>
  <tr>
    <td>Password*: </td>
    <td><%= password_field("userform", "password", :size => "20", :class => "field") %></td>
  </tr>
  <tr>
    <td>Email*: </td>
    <td><%= text_field("userform", "password", :size => "20", :class => "field") %></td>
  </tr>
  <tr>
    <td></td><td><input type="submit" value="Register" class="form_button" /></td>
  </tr>
</table>

我尝试了<% end %><% end_form_tag %>,但我收到了错误。 (意外的kEND)。我用谷歌搜索了一下,我见过的任何东西都没有帮助。哦,如果我删除水平标尺后的所有内容,表单工作正常。但我想在页面上有两个表格......

我正在使用Rails 2.3.5。

4 个答案:

答案 0 :(得分:11)

form_tag也会占用一个块,您可以在其中放置表单元素,然后它将自动关闭。来自the docs

<% form_tag '/posts' do -%>
    <div><%= submit_tag 'Save' %></div>
<% end -%>

# => <form action="/posts" method="post"><div><input type="submit" name="submit" value="Save" /></div></form>

答案 1 :(得分:5)

简短版本(另见:http://dev.rubyonrails.org/ticket/7391):

</form>

正确版本:

<% form_tag '/someform' do -%> 
    <div><%= submit_tag 'Submit' %></div>
<% end -%>

答案 2 :(得分:0)

我的修复方法是在结束前包含提交按钮,并使按钮不显示。

  <%= submit_tag('',style: 'width:0;height:0;display:none;') %>
<% end %>

这会将结束标记放在我需要的位置。

答案 3 :(得分:0)

我的修复方法是将表单标记放在表格标记的上方。

<%= form_tag(update_password_path, :method=> "post") do |f| %>
 <p id="notice"><%= notice %></p>
<table align="center">