Ruby on rails 搜索形式中的动态路径
我正在使用Ransack搜索表单,效果很好。搜索表单如下所示: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")
.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: ??
现在我想将这个搜索表单移动到一个分部,这样它就可以在多个页面上重用,一些页面在namespaceadmin
中,其他页面则不能。
因此,我创建了一个分部,其中的搜索表单如下所示:
.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
并在控制器中设置路径变量?