从 Rails 4 视图中使用 link_to 删除
Deleting with link_to from within a Rails 4 view
后面的Rails4link_to错了,删不掉,不知道为什么。在这个项目中,"bookmarks" 是 "users" 下的嵌套资源,所以 rake routes 给我:
DELETE /users/:user_id/bookmarks/:id(.:format) bookmarks#destroy
查看:
<% @bookmarks.each do |bookmark| %>
<%= link_to "delete", user_bookmarks_path(@user, bookmark.id), method: :delete %>
<% end %>
控制器:
def destroy
@user.bookmarks.find(params[:id]).destroy
redirect_to root_path
end
private
def bookmark_params
params.require(:bookmark).permit(:title, :bookmark_url)
end
def get_user
@user = User.friendly.find(params[:user_id])
end
结果是 link,看起来像 http://www.example.com/users/jane-doe/bookmarks.6,其中 6 是要删除的书签的正确 ID。但我不明白为什么它没有创建 /bookmarks/6,我认为它可以在我的控制器中与 destroy 一起正常工作。感觉好像有一些我只是不理解的大概念。任何提示表示赞赏。
您的视图应如下所示。您的路径名似乎不正确:
<% @bookmarks.each do |bookmark| %>
<%= link_to "delete", user_bookmark_path(@user, bookmark.id), method: :delete %>
<% end %>
后面的Rails4link_to错了,删不掉,不知道为什么。在这个项目中,"bookmarks" 是 "users" 下的嵌套资源,所以 rake routes 给我:
DELETE /users/:user_id/bookmarks/:id(.:format) bookmarks#destroy
查看:
<% @bookmarks.each do |bookmark| %>
<%= link_to "delete", user_bookmarks_path(@user, bookmark.id), method: :delete %>
<% end %>
控制器:
def destroy
@user.bookmarks.find(params[:id]).destroy
redirect_to root_path
end
private
def bookmark_params
params.require(:bookmark).permit(:title, :bookmark_url)
end
def get_user
@user = User.friendly.find(params[:user_id])
end
结果是 link,看起来像 http://www.example.com/users/jane-doe/bookmarks.6,其中 6 是要删除的书签的正确 ID。但我不明白为什么它没有创建 /bookmarks/6,我认为它可以在我的控制器中与 destroy 一起正常工作。感觉好像有一些我只是不理解的大概念。任何提示表示赞赏。
您的视图应如下所示。您的路径名似乎不正确:
<% @bookmarks.each do |bookmark| %>
<%= link_to "delete", user_bookmark_path(@user, bookmark.id), method: :delete %>
<% end %>