我想制作搜索栏的erb模板,该模板将调用其控制器的search
方法。不同的控制器有相同的方法,但会有不同的逻辑。是否可以通过在视图上呈现它来制作适用于每个控制器的表单?
---更新--- 我找到了那种解决方案:
<%= form_tag "#{controller_name}/search", method: 'get' do %>
<div class="input-group">
<%= text_field_tag :sub_string, '', class: 'form-control', placeholder: "Search..." %>
<span class="input-group-btn">
<%= submit_tag 'Search', class: %w(btn btn-primary) %>
</span>
</div>
<% end %>
然而,当我点击提交按钮时,它会转到我当前控制器的search
动作,并且会出现错误:
Couldn't find Basis with 'id'=search
它尝试调用set_basis
私有方法,即使before_action
没有调用它?
答案 0 :(得分:0)
使用参数[:controller]设置搜索表单的控制器名称。
使用Rails Guide查看如何为form_tag或form_for传递控制器和操作。
答案 1 :(得分:0)
我想你可以 在views / shared文件夹下创建模板/部分 然后在控制器中执行类似
的操作def search
render :partial => "shared/search"
end
好的然后加上这个 在您的部分中,您可以动态更改表单的控制器
form_tag({controller: controller.controller_name, action: "search_action"}, method: "post", class: "form")