Ruby on rails 找不到id错误的模型

Ruby on rails 找不到id错误的模型,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我有音箱模型。 我想显示每个发言者在页面索引页面上发布的消息数。当我插入@speaker=speaker.find(params[:id])时,它显示错误无法找到id为的speaker。我不明白我做错了什么 我的页面控制器 class PagesController < ApplicationController def home @messages = Message.all.order("created_at DESC") @speakers = Speaker

我有音箱模型。 我想显示每个发言者在页面索引页面上发布的消息数。当我插入@speaker=speaker.find(params[:id])时,它显示错误无法找到id为的speaker。我不明白我做错了什么

我的页面控制器

class PagesController < ApplicationController

  def home
    @messages = Message.all.order("created_at DESC")

    @speakers = Speaker.all

    @speaker = Speaker.find(params[:id])
    @count = @speaker.messages.count
    @listeners = Listener.all
  end
  def about

  end
    def show
    @speaker = Speaker.find(params[:id])
    end

end
class PagesController
还有我家的风景

<%= @count %>&nbsp;Messages
消息

我想我需要查看your routes.rb和整个主视图,以便更好地理解。我的猜测是,您实际上并没有传递要查找的参数

例如,如果您的路线与此示例路线类似:

  # Example of regular route:
  #   get 'products/:id' => 'catalog#view'
当您转到URL products/1时,它知道将参数id 1(
params[:id]=1
)传递给控制器。否则,您需要像通过链接一样将其传递到GET请求中。由于它是您的主页,我怀疑这是您应用程序的预期设置

我猜你是在试图循环浏览主页上的所有扬声器。在这种情况下,您可以使用更简单的代码实现相同的效果。这只是一个猜测,但您可以在控制器和视图中执行类似操作:

class PagesController < ApplicationController
  def home
    @speakers = Speaker.all
  end
end

<% @speakers.each do |speaker| %>
  <%= speaker.name %>: <%= speaker.messages.count %> messages

  <ul>
    <% speaker.messages.each do |message| %>
      <li><%= message.body %></li>
    <% end %>
  </ul>
<% end %>
class PagesController

  • 这将打印出说话人的姓名和消息数,然后打印出他们的所有消息,假设您在模型中设置了他们之间的关系。

    尝试在每次查找之前打印参数[:id]的值,确保它是一个数字谢谢。它成功了,是的,我只想在我的主页上循环。我没有意识到我需要先把它放在一个循环中,然后再显示没有问题!你试过迈克尔·哈特尔的书了吗?它非常适合学习Rails,在线版本是免费的。你可以在这里找到它: