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