使用destroy方法时"无法找到具有id的用户"错误

col*_*l29 1 ruby-on-rails crud

我正在制作一个CRUD应用程序,除了销毁之外一切正常.当我在编辑页面时单击删除按钮时,我收到以下错误:TravelersController中的ActiveRecord :: RecordNotFound#show,找不到'id'= 14的提升者,提取源(第22行) ):

def show
    @traveler = Traveler.find(params[:id])
end
Run Code Online (Sandbox Code Playgroud)

但是,如果我回到我的用户列表,即使我收到该错误,该应用程序也会删除该用户.

这是我的控制器代码:

  def show
    @traveler = Traveler.find(params[:id])
  end

  def destroy
    Traveler.destroy(params[:id])
    redirect_to traveler_path
  end
Run Code Online (Sandbox Code Playgroud)

我的编辑页面:

   <%= form_for @traveler do |f| %>
      <%= f.label :name %>
      <%= f.text_field :name %>

      <%= f.label :age %>
      <%= f.number_field :age %></br>

      <%= f.submit %>
    <% end %>
    <%= button_to "DELETE", traveler_path(@traveler), :method => :delete %>
Run Code Online (Sandbox Code Playgroud)

Pet*_*rov 6

这是因为当你摧毁旅行者时,你会重定向到traveler_path,这是你刚刚删除的旅行者show动作.它试图加载那个旅行者并失败.

要解决此问题,只需将其更改为重定向到其他位置 - 例如,旅行者索引路径.