У меня есть следующие моделиRails 4 - Доступ Регистрация таблицы значений во взглядах
class Recipe < ActiveRecord::Base
has_many :recipe_ingredients
has_many :ingredients, through: :recipe_ingredients
end
class Ingredient < ActiveRecord::Base
has_many :recipe_ingredients
has_many :recipes, through: :recipe_ingredients
end
class RecipeIngredient < ActiveRecord::Base
belongs_to :recipe
belongs_to :ingredient
end
Я проверил через рельсы консоли, что has_many через многие-ко-многим хорошо работает.
Существует один атрибут в таблице соединения RecipeIngredient в схеме это:
t.text «количество»
Я хотел бы, чтобы отобразить название от ингредиента и сумму от RecipeIngredient, связанную с рецептом ,
Я включил следующие строки в шоу действия RecipeController в:
def show
@recipe = Recipe.includes(:ingredients).find(params[:id])
end
Вот рецепты/show.html.erb:
<% title @recipe.name %>
<div class="col-md-12">
<div class="group">
<%= link_to("Edit", edit_recipe_path(@recipe), class: "btn btn-primary pull-right")%>
</div>
<h2><%= @recipe.name %></h2>
<p><%= @recipe.description %></p>
<ul>Ingredients:
<% @recipe.ingredients.each do |i| ri = i.recipe_ingredients.where("recipe_id: ?", @recipe.id) %>
<li><%= link_to(i.name, ingredient_path(i)) %></li>
<p><%= ri.amount %></p>
<% end %>
</div>
Приведенный выше код работает хорошо без присоединения части таблицы. Но после того, как он был введен, появляется NoMethodError in Recipes # show, говоря, что это неопределенный метод.
Как я могу получить доступ к значению тогда?
огромное спасибо, это работает. могу ли я спросить, что лучше всего сделать, если я хочу сделать этот атрибут редактируемым? – ccycecilyip