1

这是我的第一个自定义路线,任何帮助将不胜感激。

访问 /quotes/new 时的错误

No route matches {:controller=>"QuotesController", :action=>"getdata"}

我的表格:

<%= f.input :make, collection: clothing_types, label: 'Thread Type', remote: true,
 :'data-url' => url_for( :controller => 'QuotesController', :action => 'getdata'), 
 :'data-type' => 'json', input_html: {class: "select_make"} %>

(我尝试将“QuotesController”更改为“Quotes”或“quotes_controller”,他们只是更改了错误中的措辞)

路由.rb

get 'quotes/getdata' => 'quotes#new'

引号_控制器.rb

def getdata
  @make = params[:make]
  @clothes = Product.where(:item_make => @make).all
  render :json => @clothes.map{|c| [c.id, c.name]}
end

当我运行 rake 路线时,我看到

quotes_getdata GET    /quotes/getdata(.:format)       quotes#new
4

3 回答 3

0

尝试更改get 'quotes/getdata' => 'quotes#new'get 'quotes/getdata' => 'quotes#getdata'. 并在表格url_for( :controller => 'QuotesController', :action => 'getdata')url_for( :controller => 'quotes', :action => 'getdata')

此外,您可以通过像这样声明一个 named_route 来改进您的视图代码:

'quotes/getdata' => 'quotes#new', as: :quotes_getdata

和形式:

<%= f.input :make, collection: clothing_types, label: 'Thread Type', remote: true,
:'data-url' => quotes_getdata_path, :'data-type' => 'json', input_html: {class: "select_make"} %>
于 2013-10-10T22:43:57.903 回答
0

您的路线指向quotes/getdatanew操作QuotesController。当您调用 时url_for,它找不到映射到 的getdata动作的路由QuotesController

您所要做的就是url_for像这样修改您的参数:

url_for(controller: 'quotes', action: 'new')

以上将http://.../quotes/getdata根据需要生成。

或者,您可以调用quotes_getdata_url代替url_for.

于 2013-10-10T22:54:18.990 回答
-1

两件事情:

url_for(controller: :quotes, action: :getdata)

更重要的是:

这个表格是通过 GET 发送的吗?- 如果不是,您应该采用您的路线来响应 POST 请求。

于 2013-10-10T22:58:17.040 回答