Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 搜索形式中的动态路径_Ruby On Rails_Ransack - Fatal编程技术网

Ruby on rails 搜索形式中的动态路径

Ruby on rails 搜索形式中的动态路径,ruby-on-rails,ransack,Ruby On Rails,Ransack,我正在使用Ransack搜索表单,效果很好。搜索表单如下所示: .table-actions .search = search_form_for [:admin, search] do |f| .field = f.text_field :name_cont, placeholder: I18n.t(".general.search") .actions= f.submit I18n.t(".general.search_button")

我正在使用Ransack搜索表单,效果很好。搜索表单如下所示:

.table-actions
  .search
    = search_form_for [:admin, search] do |f|
      .field
        = f.text_field :name_cont, placeholder: I18n.t(".general.search")
      .actions= f.submit I18n.t(".general.search_button")
  .add-record
    %button= link_to I18n.t(".general.table.add"), new_admin_plan_path
= search_form_for path do |f|
= render "shared/table_actions", search: @search, path: ??
现在我想将这个搜索表单移动到一个分部,这样它就可以在多个页面上重用,一些页面在namespace
admin
中,其他页面则不能。 因此,我创建了一个分部,其中的搜索表单如下所示:

.table-actions
  .search
    = search_form_for [:admin, search] do |f|
      .field
        = f.text_field :name_cont, placeholder: I18n.t(".general.search")
      .actions= f.submit I18n.t(".general.search_button")
  .add-record
    %button= link_to I18n.t(".general.table.add"), new_admin_plan_path
= search_form_for path do |f|
= render "shared/table_actions", search: @search, path: ??
我想这样称呼它:

.table-actions
  .search
    = search_form_for [:admin, search] do |f|
      .field
        = f.text_field :name_cont, placeholder: I18n.t(".general.search")
      .actions= f.submit I18n.t(".general.search_button")
  .add-record
    %button= link_to I18n.t(".general.table.add"), new_admin_plan_path
= search_form_for path do |f|
= render "shared/table_actions", search: @search, path: ??

路径应该具有哪些动态值才能使其工作?或者有更好的解决方案吗?

可能已经晚了,但这里有一个可行的解决方案:

假设我们在
客户机\u控制器中有两个操作:

  def index
    @ransack_clients = Client.ransack(params[:clients_search], search_key: :clients_search)
    @clients = @ransack_clients.result.paginate(:page => params[:page], :per_page => 15).order("created_at DESC")
    @ransack_path = clients_path
  end

  def bday_today
    @ransack_clients = Client.bday_today.search(params[:clients_search], search_key: :clients_search)
    @clients = @ransack_clients.result.paginate(:page => params[:page], :per_page => 15).order("created_at DESC")
    @ransack_path = bday_today_clients_path
    render 'index'
  end
注意
@ransack\u路径

现在,在索引视图中,
ransack\u路径
将自动设置,这样当您按提交时,您的搜索将在当前控制器中执行

= search_form_for @ransack_clients, as: :clients_search, url: @ransack_path do |f|
以下是我的一段路线:

  resources :clients do
    get :bday_today, on: :collection
    collection do
      match 'search' => 'clients#search', via: [:get, :post], as: :search
    end
  end

您是否在新创建的分部代码中添加了路径do | f |
?你能发布完整的部分吗?如果不是这样的话。还有,
@search
搜索什么?您在您的部分中的何处使用它?部分中的搜索表单与上面完全相同,只是将
[:admin,search]
替换为
路径
,使其成为动态的@搜索是Ransack的搜索对象。我还是不明白你的问题。帮我了解一下你的情况。您是说如何将
路径:??
局部变量
传递到
共享/表操作
部分?这是正确的,尤其是在名称空间路径的情况下。那么为什么您不能这样做:
=呈现“共享/表操作”,搜索:@search,path:@path
并在控制器中设置路径变量?