【问题标题】:Undefined method "cmdb_searches_path" for form_for in index索引中 form_for 的未定义方法“cmdb_searches_path”
【发布时间】:2015-06-04 05:00:35
【问题描述】:

我有一个 cmdbs_controller.rb,其中有索引并定义了 cmdb 资源路由:

def index
  @cisearch = CmdbSearch.new
end

我还有一个 cmdb_search 模型,它是搜索表单(空)的模型。在我的 index.html.erb 中,我想像这样加载 form_for:

<%= form_for @cisearch, remote:true  do |f| %>
...some code..           
<% end %>

我之前已经对其他页面进行过这样的搜索,但现在我得到一个错误:

undefined method `cmdb_searches_path'

编辑: 没有cmdb_search 控制器,cmdb_model 是为构建搜索表单而创建的,它是暂时使用的。 有效的例子: 我以前就是这样做的,而且效果很好:

 #requests_controller.rb
def index
  if !user_signed_in?
    redirect_to new_user_session_path
  else 
     @requests = Request.search(params[:search]).order("#{sort_column} #{sort_direction}").where("payed = ?", false).order(created_at: :desc).paginate(per_page: 20, page: params[:page])
     @search = Search.new
  end
end
然后我有搜索模型。 在 requests/index.html.erb 里面我有:

<%= form_for @search, remote: true do |f| %>
  .. some code 
<% end %>

它的工作方式是我在 requests_controller 中创建了一个搜索模型实例,以便能够创建 form_for @search。我没有定义任何特定的路线,只有资源路线。这以前有效,但对于这个它不起作用。

【问题讨论】:

  • 在终端中运行rake routes 命令并在此处共享输出。还有你的routes.rbcmdb_search_controller是什么??
  • 你为cmdb_search添加路由了吗?
  • @user123,不,我想我只需要表单提交操作的路由。因为我没有为 requests_controller 添加任何特定路由
  • 你要加resources :cmdb_searches
  • @yerassyl 有效吗?

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-3.2


【解决方案1】:

由于您是从索引操作呈现表单,它不知道创建操作。将您的 form_for 修改为:

 form_for @cisearch, :url => your_create_action,remote:true

【讨论】:

    【解决方案2】:

    resources :cmdb_searches 添加到您的 routes.rb

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多