2014-11-21 2 views
0

Я взламываю свою первую серьезную попытку в приложении для рельсов и столкнулся с небольшими неприятностями.Отображение содержимого связанной модели

У меня есть две модели, одна называется LegalForm, а другая - Question. Один содержит список разных форм, а другой содержит вопросы, связанные с каждым. Или, как я уже отмечал в моем legal_form.rb

class LegalForm < ActiveRecord::Base 
    has_many :questions 
end 

Каждая таблица базы данных устанавливается следующим образом:

mysql> select * from questions; 
+----+--------------+-----------------+---------------+---------------------------------------------------------------------+---------------------+---------------------+ 
| id | legalform_id | question_number | question_type | the_question              | created_at   | updated_at   | 
+----+--------------+-----------------+---------------+---------------------------------------------------------------------+---------------------+---------------------+ 
| 1 |   1 |    1 | lorem   | lorem ipsum dolor sit amet consectetuer adipiscing elit proin risus | 2014-11-20 21:27:04 | 2014-11-20 21:27:04 | 
| 2 |   1 |    2 | lorem   | lorem ipsum dolor sit amet consectetuer adipiscing elit proin risus | 2014-11-20 21:27:04 | 2014-11-20 21:27:04 | 
| 3 |   1 |    3 | lorem   | lorem ipsum dolor sit amet consectetuer adipiscing elit proin risus | 2014-11-20 21:27:04 | 2014-11-20 21:27:04 | 
| 4 |   1 |    4 | lorem   | lorem ipsum dolor sit amet consectetuer adipiscing elit proin risus | 2014-11-20 21:27:04 | 2014-11-20 21:27:04 | 
| 5 |   1 |    5 | lorem   | lorem ipsum dolor sit amet consectetuer adipiscing elit proin risus | 2014-11-20 21:27:04 | 2014-11-20 21:27:04 | 
| 6 |   1 |    6 | lorem   | lorem ipsum dolor sit amet consectetuer adipiscing elit proin risus | 2014-11-20 21:27:04 | 2014-11-20 21:27:04 | 
| 7 |   1 |    7 | lorem   | lorem ipsum dolor sit amet consectetuer adipiscing elit proin risus | 2014-11-20 21:27:04 | 2014-11-20 21:27:04 | 
| 8 |   1 |    8 | lorem   | lorem ipsum dolor sit amet consectetuer adipiscing elit proin risus | 2014-11-20 21:27:04 | 2014-11-20 21:27:04 | 
| 9 |   1 |    9 | lorem   | lorem ipsum dolor sit amet consectetuer adipiscing elit proin risus | 2014-11-20 21:27:04 | 2014-11-20 21:27:04 | 
| 10 |   1 |    10 | lorem   | lorem ipsum dolor sit amet consectetuer adipiscing elit proin risus | 2014-11-20 21:27:04 | 2014-11-20 21:27:04 | 
+----+--------------+-----------------+---------------+---------------------------------------------------------------------+---------------------+---------------------+ 
10 rows in set (0.00 sec) 

mysql> select * from legal_forms;                                     
+----+------------+---------+---------------------+---------------------+                           
| id | title  | company | created_at   | updated_at   |                           
+----+------------+---------+---------------------+---------------------+ 
| 1 | First_Form |  1 | 2014-11-20 20:58:53 | 2014-11-20 20:58:53 | 
+----+------------+---------+---------------------+---------------------+ 

То, что я хотел бы сделать ли отображать вопросы 1- 10, как представлено выше, в представлении show для legal_forms.

Для этого я создал мой legal_forms_controller.rb следующим образом:

class LegalFormsController < ApplicationController 
    def index 
@legal_forms=LegalForm.all 
    end 

    def ufilter 
    end 

    def own 
    end 

    def show 
@legalform = LegalForm.find(params[:id]) 
@questions = @legalform.questions 
    end 

    private 
    def legal_forms_params 
params.require(:legalform).permit(:title, :company) 
    end 
end 

И создали свой show.html.erb файл, как это:

<h1>LegalForms#show</h1> 
<p>Find me in app/views/legal_forms/show.html.erb</p> 
<% @questions.each do |question| %> 
<span><%= question.the_question %> </span> 
<% end %> 

Однако, когда я перейти на страницу на localhost:3000/legal_forms/1, я столкнулся со следующими ошибками:

ActiveRecord::StatementInvalid in LegalForms#show Mysql2::Error: Unknown column 'questions.legal_form_id' in 'where clause': SELECT questions .* FROM questions WHERE questions . legal_form_id = 1

Сообщение об ошибке вызывает событие в цикле (что имеет смысл с учетом ошибки sql). У меня явно есть неправильное представление о чем-то здесь. Любая помощь, попадающая на правильный путь, была бы весьма признательна.

ответ

1

У вас явно есть проблема с именем вашей колонки.

Вы столбец имя legalform_id и вы запрашиваете legal_form_id.

Я не знаю, как вы определили свою модель вопроса, но там есть что-то подозрительное.

+0

Хорошо играл сэр! – neanderslob

1

Если вы используете has_many ассоциацию в модели - по умолчанию ЗАРУБЕЖНОГО ключ model_name_id Вам нужно добавить foreing_key к вашему has_many, как legalform_id АССОЦИАЦИИ или переименовать столбец в базе данных для legal_form_id

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