рельсовый контроллер, неопределенная ошибка метода - на основе боковых направляющих - PullRequest
0 голосов
/ 07 сентября 2010

Я создаю довольно простой сайт рецептов для изучения RoR, и я следовал руководству по началу работы, за исключением того, что я обменивался постами на рецепты и комментариями для ингредиентов. Я полностью удалил комментарий (ингредиент) http://edgeguides.rubyonrails.org/getting_started.html#deleting-comments

теперь я получаю сообщение об ошибке

undefined method `recipe' for #

Строка, которая в частичном, вызывающем проблему, находится здесь

<%= link_to 'Delete Ingredient', [ingredient.recipe_id, ingredient],
                    :confirm => 'Are you sure',
                    :method => :delete %>

Метод контроллера (который, я думаю, не имеет никакого эффекта, но я не совсем уверен) -

   
def destroy
        @recipe = Recipe.find(params[:recipe_id])
        @ingredient = @recipe.ingredient.find(params[:id])
        @ingredient.destroy
        redirect_to post_path(@recipe)
end

Я использую 'recipe_id' в link_to, потому что при выводе отладки он не имеет атрибута 'recipe', но имеет атрибут recipe_id.

Выходные данные отладки:


--- !ruby/object:Ingredient 
attributes: 
  id: 3
  ingredient: testing
  amount: 10
  measure: "10"
  description: "10"
  recipe_id: 2
  created_at: 2010-09-06 22:16:17.599217
  updated_at: 2010-09-06 22:16:17.599217
attributes_cache: {}

changed_attributes: {}

destroyed: false
marked_for_destruction: false
new_record: false
previously_changed: {}

readonly: false

Я предполагаю, что [component.recipe_id, component] - это просто хеш переменных ?? Это верно? Я подхожу к этому не с того угла?

1 Ответ

1 голос
/ 07 сентября 2010

Снято в темноте, правильны ли ваши ассоциации? Вроде как:

class Ingredient < ActiveRecord::Base
  belongs_to  :recipe
  ...

Это даст вам

@ingredient.recipe

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...