我在Rails中很新,我希望你能帮助我。
我想访问一个数组并打印出该数组的每个元素。现在使用此代码
- @recipes.each do |recipe|
%h2= recipe.name
%p= recipe.description
%p= recipe.cuisine_id
%p= recipe.ingredients
recipe.ingredients在浏览器上打印
当我尝试
时 - recipe.ingredients.each do |ingredient|
%p= ingredient
它尝试查询成分表,而它只是表格配方的一列。如果我使用to_s
,也会得到相同的结果。
你有什么建议吗?
谢谢你们!
答案 0 :(得分:0)
正如我看到你的ingredients
模型中有recipes
属性以及名为ingredients
的模型,也许你可以尝试“别名”recipe.ingredients
列:
# app/models/recipe.rb
class Recipe < ApplicationRecord
...
alias_attribute :new_alias, :column_name
end
通过这种方式,您可以使用两个名称,旧名称或您设置的别名来访问该属性。
- recipe.new_alias.each do |ingredient|
%p= ingredient
您也可以使用ActiveRecord选择带有别名的列,例如:
@recipes = Recipe.select('description, cuisine_id, ingredient AS some_alias')
然后在你看来:
- recipe.some_alias.each do |ingredient|
%p= ingredient
答案 1 :(得分:0)
您是否有不同的recipe
和ingredient
型号?根据您的描述,听起来食谱与成分有has_many
的关系。如果是这种情况,则多个查询完全有意义。
基本上,当您尝试访问尚未加载的模型时,Rails将为您执行查询。如果您没有包含您在视图中访问的内容并且可能难以调试,这可能会很麻烦。您需要做的是在控制器中.joins(:ingredients)
,您正在查找您的食谱,这将在您加载食谱时加载相关成分。如果没有看到您的控制器和型号代码,我就不能更具体了。