访问存储在PSQL Rails中的数组

时间:2017-04-17 18:46:34

标签: ruby-on-rails haml

我在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,也会得到相同的结果。

你有什么建议吗?

谢谢你们!

2 个答案:

答案 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)

您是否有不同的recipeingredient型号?根据您的描述,听起来食谱与成分有has_many的关系。如果是这种情况,则多个查询完全有意义。

基本上,当您尝试访问尚未加载的模型时,Rails将为您执行查询。如果您没有包含您在视图中访问的内容并且可能难以调试,这可能会很麻烦。您需要做的是在控制器中.joins(:ingredients),您正在查找您的食谱,这将在您加载食谱时加载相关成分。如果没有看到您的控制器和型号代码,我就不能更具体了。