我对rails很陌生并且最容易解决问题。我有以下问题:
当我试图销毁搜索时(从我的模型搜索中)它不起作用,我被重定向到“/ search.48(ID为48的搜索)。它给了我通知”我们很抱歉,但是出了点问题。“在控制台中它用POST说了些什么。搜索都没有删除,redirect_to search_path也没有用。我做错了什么?
这是我的控制者:
def show
@searches = current_user.searches
end
def destroy
@search = Search.find(params[:id])
@search.destroy
flash[:success] = "Search deleted"
redirect_to search_path
end
这是我的观点展示:
<% @searches.each do |search| %>
<%= search.title %>
<%= search.description %>
<%= button_to "delete", search, method: :destroy %>
我的routes.rb:
get 'search' => 'searches#show'
resources :searches
我还在 application.html.erb 以及<{1}}和<%= javascript_include_tag 'application' %>
中加入了//= require jquery
strong> application.js 文件。
所以我真的找不到自己的错误。有人能帮助我吗?
答案 0 :(得分:1)
在您的视图文件中,该按钮的代码应如下所示:
<%= button_to "delete", search, method: :delete %>
请注意,该方法为:delete
,而非:destroy
。这有点令人困惑,因为'delete'是REST动词,但'destroy'是控制器动作名称。
答案 1 :(得分:1)
你试过了吗?
<%= button_to "Delete", { action: "delete", id: search.id },
method: :delete %>
在你看来。此外,您似乎正在重定向到search_path,但我猜你想要search_path。
答案 2 :(得分:0)
我明白了!在我的路由器中,我写了“搜索”#39; =&GT; &#39;#搜索显示&#39;不知怎的,我的控制器与search_path混淆了。自从我将其重命名为“我的搜索”之后=&GT; &#39;#搜索显示&#39;和mysearches_path它完美地运作