我在 Rails 中有一个 HTML 表单:
<form id="my_form" action="submit">
Title: <input type="text" name="title">
</form>
我想使用<textarea>
添加一个新字段:
Comment: <textarea rows="4" cols="50"></textarea>
把它放到表格里可以吗?如何访问用户填写的值?
除非你有充分的理由不这样做,否则你应该真正使用 rails 提供的动作视图帮助程序。
表单帮助程序提供面向资源的方法,这些方法围绕特定模型对象创建表单和范围,但这不适合您的情况。
相反,你想要的是使用通用表单标记帮助程序,其中包括不绑定到任何特定模型或记录的表单方法的通用版本,例如:form_tag
、text_field_tag
、text_area_tag
等。这些方法不需要您将记录传递给它们或根据特定模型定义它们;您可以定义任意操作、ID 等,如下所示:
<%= form_tag "submit", :id => "my_form" do -%>
Title: <%= text_field_tag "title" %>
Comment: <%= text_area_tag "comment", :rows => 4, :cols => 50 %>
<%= submit_tag "Submit" %>
<% end -%>
请注意,您的文本区域没有name
或id
,因此我任意分配给它们字符串"comment"
,这对于这种情况是有意义的。
在访问用户输入的值方面,您只需像任何其他形式一样进行操作,即在您的控制器中,您只需访问params[:title]
、params[:comment]
等。
如果使用form_tag助手,则可以按如下方式创建文本区域:
text_area_tag(:comment, nil, :rows => 5, :cols => 15)
您的form_tag代码如下所示:
<% form_tag :action => :submit do %>
<%= label_tag "Title" %>
<%= text_field_tag :title %>
<%= text_area_tag :comment, nil, :rows => 5, :cols => 15 %>
<%= submit_tag "submit" %>
<% end %>
您应该在控制器中具有名为 submit 的方法。在该方法中,您可以使用参数访问注释。例如,注释可以作为参数[:注释]访问
有关更多信息,请参阅以下内容:forms_and_tags
当用户按下 Title 时,使用这种方式怎么样:该框将突出显示它为用户提供了更大的灵活性。
<form id="my_form" action="submit">
<label for="title">Title: </label>
<input type="text" name="title" id="title">
</form>