В моей системе настроены следующие ассоциации:
class Book < ActiveRecord::Base
has_many : suggestions
has_many : comments
has_many : references
В представлении Показать модели моей книги я хочу предоставить пользователю возможность выбора (из выпадающего списка).) вид, который они хотели бы видеть.Так, например, если пользователь выбирает из этого выпадающего списка подсказки , то частичная перезагрузка с предложениями.Аналогично для остальных 3 вариантов.Чтобы достичь этого, я написал следующий метод в моей модели: book.rb :
def self.select_content_type(content_type)
case content_type
when "suggestions"
# get the suggestions
@book_suggestions = Book.suggestions.paginate(:per_page => 6, :page => params[:page])
# return this
return @book_suggestions
when "comments"
# get the comments
@book_comments = Book.comments.paginate(:per_page => 6, :page => params[:page])
# return this
return @book_comments
when "references"
# get the references
@book_references = Book.references.paginate(:per_page => 6, :page => params[:page])
# return this
return @book_references
end
end
Япытаюсь получить доступ к этому методу в действии «Show» моего book_controller.rb следующим образом:
@book_content = Book.select_content_type(params[:content_type])
В представлении Show у меня есть следующая форма для запроса getэтот метод:
- form_tag book_path(@book), :id=>"select_rel_form", :remote => true, :method => 'get' do
= text_field_tag :content_type, params[:content_type], :id=>"select_rel_type"
= submit_tag "submit", :name => nil, :class=>"select_rel_submit"
И в части с именем * _content * я получаю доступ к возвращаемому значению следующим образом:
- if !@book_content.nil?
- @issue_relations.each do |relation|
...
Я получаю следующую ошибку:
NoMethodError (undefined method `suggestions' for #<Class:0x1177f4b8>):
app/models/book.rb:93:in `select_content_type'
app/controllers/books_controller.rb:21:in `show'
Пожалуйста, помогите мне понять, как я могу это исправить.Если есть правильный и лучший способ добиться этого, пожалуйста, наставьте меня.Спасибо.