为什么我为form_tag获取错误的参数数量(1表示2)

时间:2014-04-18 13:23:44

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2

这是我的_search_box.html.erb文件

<%= form_tag "/search", :method => "get" do %>
  <%= text_field :q %> 
  <%= submit_tag 'Search' %>
<% end %>

search.html.erb中呈现:

 &#39; search_box&#39; %GT;
<% if @products %>
    <%= render(:partial => "products") %>
<% end %>

但是,我在_search_box.html.erb第2行收到错误:

Showing /****/app/views/catalog/_search_box.html.erb where line #2 raised:

wrong number of arguments (1 for 2)

Extracted source (around line #2):

1: <%= form_tag "/search", :method => "get" do %>
2:   <%= text_field :q %> 
3:   <%= submit_tag 'Search' %>
4: <% end %>

Waht&#392错了?

1 个答案:

答案 0 :(得分:3)

form_tag不是text_field给你错误的,text_fieldform_for旨在form_tag内使用,而不是text_field_tag

我认为您的意思是使用{{1}}代替。

text_field(object_name,method,options = {})

返回“text”类型的输入标记,该标记用于访问分配给模板的对象(由对象标识)的指定属性(由方法标识)。输入标记上的其他选项可以作为带选项的哈希传递。这些选项将作为HTML元素属性标记到HTML上,如图所示。

http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html

text_field_tag(name,value = nil,options = {})

创建标准文本字段;使用这些文本字段输入较小的文本块,如用户名或搜索查询。

http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html