Rails,可与不同控制器配合使用的表单
Rails, form that can work with different controllers
我想制作搜索栏的 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
?
调用
使用参数[:controller]设置搜索表单的控制器名称。
使用 Rails Guide 查看如何为 form_tag 或 form_for 传递控制器和操作。
我觉得你可以
在 views/shared 文件夹下创建 template/partial
然后在控制器中做类似
的事情
def search
render :partial => "shared/search"
end
好的 然后添加这个
在你的部分,这样你就可以动态地改变你的控制器的形式
form_tag({controller: controller.controller_name, action: "search_action"}, method: "post", class: "form")
我想制作搜索栏的 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
?
使用参数[:controller]设置搜索表单的控制器名称。
使用 Rails Guide 查看如何为 form_tag 或 form_for 传递控制器和操作。
我觉得你可以 在 views/shared 文件夹下创建 template/partial 然后在控制器中做类似
的事情def search
render :partial => "shared/search"
end
好的 然后添加这个 在你的部分,这样你就可以动态地改变你的控制器的形式
form_tag({controller: controller.controller_name, action: "search_action"}, method: "post", class: "form")