【问题标题】:rails 4 ransack gem, undefined path errorrails 4 ransack gem,未定义的路径错误
【发布时间】:2023-03-29 16:52:01
【问题描述】:

我有一个带有事件模型的 rails 4 应用程序,我想使用 Ransack gem 在各种字段中进行搜索。

我的控制器操作:

def index
@search = Event.ransack(params[:q])
@events = @search.result(distinct: true)
end

我在 index.html.erb 中的搜索表单:

<%= search_form_for @search do |f| %>
<%= f.text_field :name_cont, class: "radius-left expand", placeholder: "Event Name" %>
<% end %>

但是,在加载页面时,我收到以下错误:

ActionView::Template::Error(# 的未定义方法 events_path'):1:

事件

2: 3: 4: 5: 6: app/views/events/index.html.erb :3:in_app_views_events_index_html_erb___2056451196739971413_70232473324180'

当我 rake 路线时,我得到:

     events_show GET    /events/show(.:format)         events#show
    events_index GET    /events/index(.:format)        events#index

所以我假设如果我可以让这个表单指向 events_index_path,它会按预期工作。

我需要做什么来为表单指定正确的路径?

【问题讨论】:

  • 我遇到了同样的问题。到目前为止,您是否有任何答案?
  • Tbh 我不确定我做了什么让这个工作正常。
  • 对于路径的东西,看看我在这里想出了什么。 *.com/questions/30959046/… 我必须明确说明控制器/路由的路径才能使搜索表单正常工作。

标签: ruby-on-rails-4 ransack


【解决方案1】:

Tbh 我不确定我做了什么来让它工作。这是我现在的控制器索引操作,其中包括距离/位置搜索功能:

    def index
    if params[:within].present? && (params[:within].to_i > 0)
      @search = Event.near(params[:location],params[:within]).search(params[:q])
    else
      @search = Event.search(params[:q])
    end     
    @events = @search.result
  end

【讨论】: