0

なぜそれが起こるのか、私にはまったくわかりません。

これが私のルートです

resources :users do
    resources :bookmarks
end

コントローラ

# bookmarks_controller
def edit 
    # this returns perfectly data in the edit view
    @bookmark = current_user.bookmarks.find(params[:id])
end

これがビューです

<%= form_for @bookmark do |b| %>
<% end %>

ユーザー内にブックマークリソースをネストするとすべてが台無しになるため、エラーが発生します

未定義のメソッド「bookmark_path」

次に、フォームを次のように変更します

<%= form_for user_bookmark_path(current_user, @bookmark) do |b| %>

エラーはなくなりましたが、テキスト フィールド フォームにはそのようなデータはなく、フォーム アクションは/users/[user_id]/bookmarks/[bookmark_id]/edit です。

レーキルート情報

user_bookmarks     GET    /users/:user_id/bookmarks(.:format)          bookmarks#index
                   POST   /users/:user_id/bookmarks(.:format)          bookmarks#create
new_user_bookmark  GET    /users/:user_id/bookmarks/new(.:format)      bookmarks#new
edit_user_bookmark GET    /users/:user_id/bookmarks/:id/edit(.:format) bookmarks#edit
user_bookmark      GET    /users/:user_id/bookmarks/:id(.:format)      bookmarks#show
                   PUT    /users/:user_id/bookmarks/:id(.:format)      bookmarks#update
                   DELETE /users/:user_id/bookmarks/:id(.:format)      bookmarks#destroy

それを修正する方法はありますか?ありがとう

4

1 に答える 1

4

次のようなものを試してください:

<%= form_for [current_user, @bookmark] do |b| %>
<% end %>
于 2012-12-21T16:38:41.130 に答える