Проблемы с классами вложенных рельсов и маршрутизацией - PullRequest
0 голосов
/ 13 июня 2011

Через некоторое время я пытаюсь вернуться в рельсы, и мне тяжело соединять два простых ресурса, построенных на скаффолдах. Родительский контроллер работает, но ребенок обычно взрывается. Я искал ответ на эту проблему, но не смог.

Для конкретного комментария дочернего элемента, принадлежащего родителю продукта, укажите маршрут "/ products / 1 / comments / 1"

Сообщение об ошибке

Не удалось найти комментарий без идентификатора app / controllers / comments_controller.rb: 25: в `show '

Параметры:

{ "product_id" => "1", "ID" => "1"}

Вот соответствующий код из comments_controller "show"

def show
@product = Product.find(params[:product_id])
@comment = @product.comments.find(params[:comment_id])

(Если я изменю: comment_id на просто: id, то новая ошибка:)

Не удалось найти комментарий с идентификатором = 1 [ГДЕ (comments .product_id = 1)]

{ "product_id" => "1", "ID" => "1"}

Для индекса комментариев: / products / 1 / comments

Информация об ошибке:

неопределенный метод `model_name 'для Fixnum: Class Параметры: { "Product_id" => "1"}

** Соответствующий код из представления индекса **

18:     <td><%= link_to 'Show', [@product, comment.id] %></td>
19:     <td><%= link_to 'Edit', edit_product_comment_path(@product, comment) %></td>
20:     <td><%= link_to 'Destroy', [@product, comment], :confirm => 'Are you sure?',           :method => :delete %></td>

Я провел пару дней бездельничая с этим. Проверяю простые вещи, такие как: id to: (существительное) _id, а также переключаюсь между [@product, comment] и [@product, comment.id] в ссылках моего просмотра.

Будем очень благодарны за любые предложения о том, как заставить это работать. Кажется, все должно быть просто, и я в значительной степени следовал «книге». Проблема в том, что мои тексты по rails (способ Rails и небольшая вступительная книга по ruby ​​с парой глав по rails) в лучшем случае основаны на rails 2, а веб-ресурсы не были полностью обновлены.

Обновление: * routes.rb * Party2 :: Application.routes.draw do

resources :comments

resources :products do
  resources :comments
end

Ошибки из индекса комментариев

неопределенный метод `model_name 'для Fixnum: Class

Соответствующий код из индекса комментария (ошибка в строке 18)

18:     <td><%= link_to 'Show', [@product, comment.id] %></td>
19:     <td><%= link_to 'Edit', edit_product_comment_path(@product, comment) %></td>
20:     <td><%= link_to 'Destroy', [@product, comment], :confirm => 'Are you sure?', :method => :delete %></td>

Еще одно обновление: * Модель *

class Product < ActiveRecord::Base
  has_many :comments
end

class Comment < ActiveRecord::Base
  belongs_to :product
end

Еще раз спасибо,

Cameron

(мне кажется очень странным, что это не должно работать, так как я следовал инструкциям.: /)

1 Ответ

0 голосов
/ 13 июня 2011

Если комментарий может принадлежать только одному продукту, вы можете сделать что-то подобное в comments_controller.rb:

def show
  @comment = Comment.find(params[:id])
  # @product = @comment.product
end
...