0

そうでないコントローラーから名前空間が設定されているモデルの 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」を機能させる方法はありますか?

4

1 に答える 1

1

上記のコメントの1つで述べたように、あなたは

resources :widgets

あなたのconfig/routes.rblocation上記で設定しようとしているのはurl_for、次のルートと一致させようとしている

widget GET    /widgets/:id(.:format)    widgets#show

しかし、あなたが言ったように、代わりにレールはあなたが(存在しない)ルートurl_for wを探していると推測します。代わりに、その行をに変更します some_stuff_widget_path

location = url_for widget_path(w)
于 2012-07-09T16:05:20.120 に答える