2015-09-09 1 views
2

У меня есть две модели Проблема и Сплит.Как мне получить доступ к данным из модели, к которой относится данная модель?

Проблемы имеют много Сплитов, Сплит принадлежит к проблеме. Вот код для двух моделей:

class Issue < ActiveRecord::Base 

    belongs_to :publication 
    has_many :splits 
    has_many :issue_split_geographies 
    belongs_to :medium 

    validates :name, :start_date, :status, presence: true 
end 

class Split < ActiveRecord::Base 
    belongs_to :issue 
    has_and_belongs_to_many :geographies 
    has_and_belongs_to_many :media 
end 

Я знаю, как получить доступ к разделенным информации от вопроса в моих взглядах Issue делая @ issue.split.name, если я хочу, чтобы получить раздвоение имя на мой взгляд, вопрос ,

У меня возникли проблемы с выяснением того, как идти другим путем. Как я могу показать информацию о проблеме в режиме Split?

@ split.issue.target дает мне неопределенный метод `выпуск 'для ноль: NilClass

split.issue.target дает мне неопределенную локальную переменную или метод` расколоть' для

issue.target дает мне "неопределенная локальная переменная или метод` issue 'для "

Я пытаюсь показать целевое значение для проблемы на странице индекса разбиения, чтобы я мог определить, сколько еще разделов добавить для достижения моей цели.

Кажется, что я пропускаю что-то очевидное. Но, я немного нуб.

Благодаря

+0

Где вы определили '@ split'? Отправьте связанный код. – Pavan

+0

И в вашем примере, '@ split' имеет' issue_id'? – trh

+0

Я показываю это на индексной странице, так что issue_id еще не назначен. Я буквально просто пытаюсь показать значение целевого значения проблемы, чтобы конечный пользователь мог решить, для каких разделов назначить проблему для достижения этого значения. Подумайте об этом, добавляя газ в бензобак. Я пытаюсь показать емкость газового баллона, чтобы пользователь мог определить, какие баллоны для газа добавить в резервуар, чтобы он был заполнен. –

ответ

1
@split.issue.target 

правильный путь, как ваш разделитьbelongs_toвопрос. Итак, @split.issue в порядке. Просто убедитесь, что вы определили @split в действии вашего соответствующего контроллера, и у вас есть issue_id в вашей таблице splits.

Но, как вы говорите: @issue.split.name, который не должен быть корректным, как ваш вопросhas_manyветвлением. Оно должно быть как: @issue.splits.first.name

Ваше сообщение об ошибке:

@split.issue.target gives me undefined method `issue' for nil:NilClass 

означает, что @split является nil. Итак, определите @split в действии/методе вашего корректора. Что-то вроде этого:

@split = Split.first 

Тогда оно должно работать.

+0

Я добавил '@split = nil' в мой контроллер расщепления для моего метода индекса (это то, что я думаю, что вы сказали, что мне нужно было сделать), и у меня есть' @ split.issue.target' в мой индексный указатель. Но я все еще получаю «неопределенный метод» для nil: NilClass' –

+0

Нет, я не сказал, что вам нужно это сделать: '@split = nil'. извините за путаницу. Этого не может быть. Вы должны установить '@ split' со значением что-то вроде этого:' @split = Split.first' –

+1

Получил это. Работает отлично. Благодаря! –

Смежные вопросы