gpt4 book ai didi

ruby-on-rails - 在 Rails 应用程序的表中显示查询结果

转载 作者:太空宇宙 更新时间:2023-11-03 18:08:10 24 4
gpt4 key购买 nike

我有如下 3 个模型。

项目模型

class Item < ApplicationRecord
belongs_to :item_type, :class_name=>ItemType, :foreign_key=>"item_type_id"
end

和成分模型

class Ingredient < ApplicationRecord
validates_presence_of :ingredient, :message=>"name cannot be blank!"
end

recipe_ingredients 的模型

class RecipeIngredient < ApplicationRecord
belongs_to :item, :class_name=>Item, :foreign_key=>"item_id"
belongs_to :ingredient, :class_name=>Ingredient, :foreign_key=>"ingredient_id"
validates_numericality_of :quantity
end

成分表有以下列

"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"ingredient" varchar,
"inventory_unit" varchar,
"recipe_unit" varchar,
"created_at" datetime NOT NULL,
"updated_at" datetime NOT NULL

配方成分索引 View 如下。成分出现在 View 中。我想从配料表中提取所选配料的配方单元并将其显示在表中。我试过它做一个查询。代码如下。

<p id="notice"><%= notice %></p>

<h1>Recipe Ingredients</h1>

<table>
<thead>
<tr>
<th>Item</th>
<th>Ingredient</th>
<th>Quantity</th>
<th colspan="3"></th>
</tr>
</thead>

<tbody>
<% @recipe_ingredients.each do |recipe_ingredient| %>
<tr>
<td><%= recipe_ingredient.item %></td>
<td><%= recipe_ingredient.ingredient.ingredient %></td>
<td><%= recipe_ingredient.quantity %></td>
<td><%= Ingredient.select('recipe_unit').where(:id => @ingredient_id) %></td>
<td><%= link_to 'Show', recipe_ingredient %></td>
<td><%= link_to 'Edit', edit_recipe_ingredient_path(recipe_ingredient) %></td>
<td><%= link_to 'Destroy', recipe_ingredient, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>

<br>

<%= link_to 'New Recipe Ingredient', new_recipe_ingredient_path %>

但我得到的输出如下图所示。

enter image description here

最佳答案

您只需输入以下内容:

recipe_ingredient.ingredient.recipe_unit

为什么这是可能的?

由于 RecipeIngredient 属于 Ingredient,您可以访问 RecipeIngredientIngredient,就好像它是像这样的任何其他领域:

recipe_ingredient.ingredient

一旦你有了原料,你可以通过键入直接拉取 recipe_unit:

recipe_ingredient.ingredient.recipe_unit

旁注:

您可以在模型类的关联性规则中省略 :class_name:foreign_key 散列。例如,就拿这个类:

class Student < ActiveRecord::Base
belongs_to Course
end

按照惯例,Rails 会将 Student 类与 Course 类相关联。 Rails 将在“students”数据库表中查找标记为“course_id”的列,如果“course_id”作为表中的一列存在,Rails 将自动使用该字段作为 Student 的外键。当您想要覆盖 Rails 中的默认约定时,您可以使用 :foreign_key => 'some_key' 表示法(除非绝对必要,否则不推荐这样做)。

有关事件记录迁移和外键关联主题的更多阅读,您可以查看 rails docs .

关于ruby-on-rails - 在 Rails 应用程序的表中显示查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40118959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com