我正在尝试为从控制器命名的模型生成一个URL,而不是。例如:
module SomeStuff
class Widget < ActiveRecord::Base; end
end
class WidgetsController < ApplicationController
def create
w = Widget.create(params)
location = url_for w
render :json => w, :location => location
end
end
问题是Rails想要存在“some_stuff_widget_path”而它不存在因为控制器没有命名空间。我尝试了另一篇文章(http://stackoverflow.com/questions/4404440/rails-url-for-and-namespaced-models)中给出的解决方案,但它们似乎没有用。
我的模型在技术上是一个单独的gem,它是命名空间,然后我的Rails应用程序包含该gem并提供控制器。如果不改变设置,有没有办法让“url_for”工作?
答案 0 :(得分:1)
正如您上面的一条评论所述,您有
resources :widgets
在config/routes.rb
中。在您尝试使用location
设置上方的url_for
中,您尝试匹配以下路线
widget GET /widgets/:id(.:format) widgets#show
但正如您所说,url_for w
反而导致铁路猜测您正在寻找(不存在的) some_stuff_widget_path
路线。而是将该行更改为
location = url_for widget_path(w)