Rails,可以与不同控制器一起使用的表单

时间:2015-03-04 09:45:32

标签: ruby-on-rails ruby search model-view-controller form-for

我想制作搜索栏的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没有调用它?

2 个答案:

答案 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")