Rails destroy不起作用并转发到错误的链接

时间:2016-06-13 20:56:00

标签: ruby-on-rails destroy

我对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 文件。

所以我真的找不到自己的错误。有人能帮助我吗?

3 个答案:

答案 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它完美地运作