我正在尝试插入一个表单,will_paginate
以便用户可以输入页码并按 Enter 导航到该页面。
为了做到这一点,我将params
请求传递给will_paginate
并将它们作为隐藏输入添加到表单中。这样,当表单提交时,所有这些值将与页码(唯一可见的输入)一起添加到 URL。
问题是我的输入似乎被解释为其父节点的文本,而不是子 html 节点。这是to_html
方法:
def to_html
inputs = [@template.tag(:input, :name => 'page', :value => current_page, :size => 1)]
@options[:params].delete(:page)
@options[:params].delete(:action)
@options[:params].each do |k, v|
inputs << @template.tag(:input, :type => 'hidden', :name => k, :value => v)
end
html = inputs.join
form = @template.content_tag(:form, @template.content_tag(:div, html))
previous_page + form + next_page
end
这是页面上显示的表单:
<form>
<div><input name="page" size="1" value="1" /><input name="utf8" type="hidden" value="✓" /><input name="full_query" type="hidden" value="{"name"=>"", "organization_name"=>"", "contact_type_id"=>""}" /><input name="commit" type="hidden" value="Generate List" /><input name="controller" type="hidden" value="contacts/contacts" /></div>
</form>
如果我只inputs.first
作为 的内容div
,它会按预期工作。但是一旦我插入多个输入,它就会被解释为文本。我在这里做错了什么?