我的显示页面出现问题,它很好地显示了我的类别页面,但是当我点击我的类别ID时,它会出现以下错误:
这是我的Show html页面代码:
<div id="page-index">
<% @games.each_slice(4) do |game| %>
<div class="row">
<% game.each do |game| %>
<div class="col-md-3 col-sm-3">
<div class="thumbnail">
<%= image_tag(game.coverpath)if game.coverpath.presence%>
<h4><b>Uncharted</b></h4>
<p><%= game.description%></p>
<%= link_to 'Read More', game_path(game), class:'btn btn-primary'%>
</div>
</div>
<% end %>
</div>
<% end %>
</div>
这是我的类别控制器代码:
class CategoriesController < ApplicationController
def index
@categories=Category.all
end
def new
@category=Category.new
end
def create
@category=Category.new(category_params)
if @category.save
flash[:notice] = 'category created'
redirect_to categories_path
else
render 'new'
end
end
def edit
@category=Category.find(params[:id])
end
def update
@category=Category.find(params[:id])
@category.update(category_params)
flash[:notice] = 'category updated'
redirect_to categories_path
end
def destroy
@category=Category.find(params[:id])
@category.destroy
flash[:notice] = 'game deleted'
redirect_to categories_path
end
def show
@category = Category.find(params[:id])
@categories = Category.all
@games = @categories.games
end
private
def category_params
params.require(:category).permit(:genre)
end
end
答案 0 :(得分:0)
你的类别模型与游戏有关系,而不是你的类别集合
你可以用
来做def show
@category = Category.find(params[:id])
@categories = Category.all
@games = @categories.map(&:games)
end
从每个类别获取所有游戏或执行以下操作
@games = Game.where(category_id: @categories.pluck(:id))
或者如果您想要显示类别中的游戏
@games = @category.games
答案 1 :(得分:0)
<div style="background:#FF0000;">
<div style="vertical-align:middle; text-align:center; padding:50px;">
<button name="Submit" type="submit" class="social_button_area_post" title=" Share Your Flow ">
<i class="fa fa-share-alt-square"></i> Video
</button>
<button name="Submit" type="submit" class="social_button_area_post" title=" Share Your Flow " id="hidethisbutton">
<i class="fa fa-share-alt-square"></i> Post
</button>
<button name="Submit" type="submit" class="social_button_area_post" title=" Share Your Flow ">
<i class="fa fa-share-alt-square"></i> Photo
</button>
</div>
</div>
此处@categories = Category.all
是ActiveRecord_Relation对象(在rails控制台中尝试@categories
)
如果在类别和游戏之间定义了@categories.class
关系
在app / models / category.rb中
has_many
这意味着类别对象可以有许多与之关联的游戏对象。 由于@categories不是Category对象(它是由ARel定义的对象集合),因此抛出错误。启动rails控制台并尝试它。
要获得某个类别的游戏,您可以先通过
获取类别对象 has_many :games
category = Category.find(<some_id>)
(如果是games = category.games
关系)
P.S错误只是说方法游戏没有在您调用它的对象上定义。您还可以尝试has_many
来检查在该对象上定义的方法。