私はいくつかの部分と開発者とのプロジェクトに取り組んでいます。mongodb を使用するため、モデルで db を宣言します。プロジェクトには複数の個別のサーバーがありますが、データベースを 1 つだけにするために、モデルを共通のディレクトリと gem に保存します。
これは、モデルの名前空間 public_models があることを意味します
/public_models/users/... のようなルートを避けるために、次のルートを宣言しました。
scope :module => "public_models" do
resources :users
end
これは多くの場合に機能し、予想されるルールを生成します。
users GET /users(.:format) public_models/users#index
POST /users(.:format) public_models/users#create
new_user GET /users/new(.:format) public_models/users#new
edit_user GET /users/:id/edit(.:format) public_models/users#edit
user GET /users/:id(.:format) public_models/users#show
PUT /users/:id(.:format) public_models/users#update
DELETE /users/:id(.:format) public_models/users#destroy
ただし、機能させるには、いくつかのリンクを変更する必要があります。index.html.erb
link_to 'Show', user_path(user) instead of link_to 'Show', user
form_for URL を指定する必要があります。私が指定した場合の問題:
form_for @user, :url => user_path(:id => @user) do |f|
その後、更新は機能しますが、新しいものではありません
form_for @user, :url => users_path(@user) do |f|
その後、新しい作品は魅力のように機能しますが、更新時にこのエラーが発生します
"No route matches [PUT] "/user.287944764774"
使用する必要がある redirect_to は言うまでもありません。
redirect_to user_path(:id => @user.id)
これはすべて非常に紛らわしく、奇妙です!モデルを別の場所に保存したいという人は初めてではありません。本当にすべてのフォームヘルパーなどを破棄する必要がありますか?これを行う適切な方法は何ですか?