ActiveRecord::RecordNotFound 在 PracticeController#show 中找不到 'id'=edit 的欢迎

ActiveRecord::RecordNotFound in PracticeController#show Couldn't find Welcome with 'id'=edit

我创建了一个 CURD 操作。每当我单击编辑、显示、删除按钮时,它都会引发错误 "Couldn't find Welcome with 'id'=edit" "Couldn't find Welcome with 'id'=show" "Couldn't find Welcome with 'id'=destroy"。我一直在努力解决这些错误,但我越来越困惑。请帮忙! Practice.controller

class PracticeController < ApplicationController
 def index
   @welcome= Welcome.all;
 end
 
 def show
   @welcome = Welcome.find(params[:id])
 end

 def new
  @welcome= Welcome.new;
 end

 def edit
  @welcome = Welcome.find(params[:id]) 
 end

 def create
  @welcome=Welcome.new(params.require(:welcome).permit(:name,:address,:city)) ;
   if @welcome.save
  #redirect_to({ action: 'practices' }, alert: "Record saved")
  redirect_to :root
   else
   render :action=>"new"
 end

 def update
  @welcome = Welcome.find(params[:id])
 
  if @welcome.update(welcome_params)
    redirect_to @welcome
  else
    render 'edit'
   end
 end

 def destroy
  @welcome = Welcome.find(params[:id])
  @welcome.destroy
 
  redirect_to welcome_path
 end
  end
end

**

<h3>Please fill the following details</h3>
<hr>
<%= form_with  scope: :welcome , local: true do |f| -%>
<b><i>Name</b></i>:&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp&nbsp<%= f.text_field :name %> </br></br>
<b><i>Address</b></i>:&nbsp &nbsp &nbsp &nbsp&nbsp <%= f.text_area :address %> </br></br>
<b><i>City</b></i>:&nbsp &nbsp &nbsp &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp <%= f.text_field :city %> </br></br>
<%= f.submit "Submit", class: "btn-submit" %>

<% end %>

<h2>Listing details</h2>
 
<table>
  <tr>
    <th>Name</th>
    <th>Address</th>
    <th> City</th>
  </tr>
 
  <% @welcome.each do |welcome| %>
    <tr>
      <td><%= welcome.name %></td>
      <td><%= welcome.address %></td>
   <td><%= welcome.city %></td>
      <td><%= link_to 'Show', {:controller => "practice", :action => "show", :welcome => welcome.id } %></td>
   <td><%= link_to 'Edit', {:controller => "practice", :action => "edit", :welcome=> welcome.id } %></td>
   <td><%= link_to 'Delete', {:controller => "practice", :action => "destroy", :welcome=> welcome.id },
     method: :delete,
     data:{confirm:'Confirm Delete?'}%></td>
    </tr>
  <% end %>
</table>

** edit.html.erb

<h1>Edit Information</h1>
 
<%= form_with(controller: :action=>"edit", local: true) do |form| %>
 
  <p>
    <%= form.label :name %><br>
    <%= form.text_field :name %>
  </p>
 
  <p>
    <%= form.label :address %><br>
    <%= form.text_area :address %>
  </p>

   <p>
 <%=form.label :city %><br>
 <%=form.text_field :city %>
   </p>

  <p>
    <%= form.submit %>
  </p>
 
<% end %>

以下是有问题的行:

可见

<td><%= link_to 'Show', {:controller => "practice", :action => "show", :welcome => welcome.id } %></td>

在控制器中

def show
         @welcome = Welcome.find(params[:id])
end

您正在视图中传递 :welcome 中的 id 参数,并试图通过 :id 访问控制器中的相同参数,这导致了问题。如下修改控制器以修复它。

def show
   @welcome = Welcome.find(params[:welcome])
end