Ruby on rails 找不到id错误的模型
我有音箱模型。 我想显示每个发言者在页面索引页面上发布的消息数。当我插入@speaker=speaker.find(params[:id])时,它显示错误无法找到id为的speaker。我不明白我做错了什么 我的页面控制器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
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 %> 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,在线版本是免费的。你可以在这里找到它: