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| %>
的誤差消失,但有在文本字段中的形式沒有這樣的數據,並且表單動作是/用戶/ [USER_ID] /書籤/ [bookmark_id] /編輯
耙路由信息
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
任何想法如何解決它?由於
只是說:'current_user.bookmarks.find(PARAMS [:編號])'會產生2個查詢到DB。你知道書籤ID,爲什麼不直接找到它(並測試所有權之後),像這樣:'Bookmark.where(id:params [:id],user_id:current_user.id)'?這隻對DB執行1個查詢;) – MrYoshiji