2016-09-19 4 views
0

У меня есть сценарий, в котором мое приложение взаимодействует с тремя моделями, называемыми User, Question and Answer. Я добавил три вопроса для пользователя из панели администратора или через консоль rails. Теперь в отдельном действии мне нужно отобразить все вопросы конкретного пользователя и предоставить возможность добавлять несколько ответов в виде текста для каждого. Я не знаю, как двигаться дальше. Вот мой пример кода, который я пробовал.Многослойная форма в рубине на рельсах

class User 
    has_many :questions 
    accepts_nested_attributes_for :questions 
    end 

    class Question 
    belongs_to :user 
    has_many :answers 
    accepts_nested_attributes_for :answers 
    end 

    class Answer 
     belongs_to :question 
    end 

    users_controller.rb 
    class UserController 
    def display_questions 
     @user = current_user 
    end 
    end 

    views/display_questions.html.erb 
    <%= form_for @user do |f| %> 
     <%= f.fields_for :questions do |q| %> 
     <%= q.fields_for :answers do |a| %> 
      <%= a.text_field :name %> 
     <% end %> 
     <%= q.link_to_add 'Add', :answers %> 
     <% end %> 
    <% end %> 

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

ответ

0

Если вы используете nested_form камень это довольно легко, просто сделать:

<%= nested_form_for @user do |f| %> 
    <%= f.fields_for :questions do |q| %> 
     <%= q.fields_for :answers do |a| %> 
      <%= a.text_field :name %> 
     <% end %> 
     <%= q.link_to_add 'Add', :answers %> 
    <% end %> 
<% end %> 

Обратите внимание на nested_form_for вместо form_for

Кроме того, вам нужно будет добавить свойство accepts_nested_attributes_for для модели, которые соответствуют:

class User < ActiveRecord::Base 
    has_many :questions 
    accepts_nested_attributes_for :questions 
end 

class Question < ActiveRecord::Base 
    belongs_to :user 
    has_many :answers 
    accepts_nested_attributes_for :answers 
end 

class Answer < ActiveRecord::Base 
    belongs_to :question 
end 
+0

Я пробовал это, но показывая мне неверную связь. Убедитесь, что accepts_nested_attributes_for используется для: ответа ассоциации. –

+0

Отредактированный ответ, чтобы добавить это. –

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