2015-09-22 6 views
1

Я работаю над системой, которая отслеживает болезни и симптомы, связанные с ними через Ruby on Rails. У меня есть таблица «болезни» и таблица «симптомы», и у них есть отношение many_to_many через таблицу симптомов. На данный момент я работаю над страницей, на которой отображается одна запись таблицы "symptoms_illnesses". Эта таблица имеет две колонки: disease_id и symptom_id.Отображение данных из нескольких таблиц в Rails

Мне нужен способ показать болезнь и симптом, соответствующие ID.

Пример: "болезнь" таблица имеет "Common Cold" под id = 1

"симптом" таблицы имеет "Fever" под id = 1

"symptoms_illness" таблица имеет illness_id = 1 и symptom_id = 1.

Я хочу, чтобы страница "symptoms_illness/1" отображала "Common Cold" и "Fever", но я не вижу очевидного способа сделать это. Другие темы на этом сайте, похоже, не удовлетворены удовлетворительным образом.

Edit 1: Я ничего не добавляет к шоу действий, кроме "по умолчанию"

def show 
     @symptoms_illness = Symptoms_illness.find(params[:id]) 
end 
+0

Не могли бы вы разместить то, что находится в действии 'show' в вашем контроллере' симптомов_illness'? – brito

+0

Добавлено в сообщение, там не так много, просто по умолчанию. На странице «Показать» отображаются только идентификаторы (1 и 1) –

+0

'find' возвращает первый результат запроса. Чтобы получить все результаты, вы должны использовать 'where', например:' @symptoms_illness = Symptoms_illness.where (id: params [: id]) '. Проверьте [этот вопрос] (http://stackoverflow.com/questions/9574659/rails-where-vs-find) для получения дополнительной информации о 'find' и' where'. – brito

ответ

0

После некоторого исследования я узнал, как сделайте это:
Во-первых, я создал @illness и @symptom экземпляров на symptom_illness_controller. Затем в действии show я добавил два find_by_id.
Наконец, в представлении «Показать» я изменил @symptomillness.illness_id на @symptomillness.illness.name, теперь он отображается хорошо.

Это может быть не самый чистый способ сделать это, но он работает для того, что я хотел выполнить.

0
def show 
    @symptoms_illness = Symptoms_illness.includes(:illness,:symptom).where(id: params[:id]) 
end 

на ваш взгляд

<%= @symptoms_illness.illness.name %> 
<%= @symptoms_illness.symptom.name %> 

PS: не тестировалось

+0

Кажется, дать «неопределенный метод« болезнь »для # <Симптомичность :: ActiveRecord_Relation: 0x007f51bbb92378> –

+0

вы можете опубликовать модели отношений –

+0

Я не думаю, что у меня есть версия на английском языке, но соответствующие таблицы для этой проблемы является: болезнь: INT идентификатор, имя строки, строка описание; симптомов: INT идентификатор, имя строки, строка описание; Symptom_illness: INT идентификатор, внутр illness_id, внутр symptoms_id; многие ко многим отношения между симптомами и заболеваниями, связанными по таблице «S_I» –

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