2013-05-15 3 views
0

Новые рельсы, извините, если ответ очевиден. Если у меня есть 2 модели, пользователь и комментарии, отношение (1: N). Когда я создаю пользователя, я также создаю комментарий.Формы рельсов - Отправка в подклассы

Проблема, с которой я столкнулась, заключается в том, как написать форму или она присуща классу пользователя, что комментарий будет связан с пользователем?

<%= form_for(@user) do |f| %> 
    <%= f.text_field :name %> 
    <%= f.text_area :comment ???? %> 
    <%= f.submit %> 
    <% end %> 

ответ

1

Я полагаю у вас есть модель для комментариев так ....

Добавить это в user.rb

has_many :comments 
accepts_nested_attributes_for :comments 

И в вашем контроллере?

def new 
    @user = User.new 
    @user.comments.build 
end 

И в вашем представлении формы:

<%= form_for @user do |f| %> 
    <%= f.text_field :name %> 
    <%= f.fields_for :comments do |comment_form| %> 
    <%= comment_form.text_field :description %> 
    <% end %> 
<% end %> 
0

Предполагая, что ваша форма пользователя верна, просто добавьте комментарий в качестве атрибута в модель пользователя. Для этого вам не нужна отдельная модель комментариев.

# schema 

create_table "posts", :force => true do |t| 
t.string "name" 
t.text  "comment" 
t.datetime "created_at", :null => false 
t.datetime "updated_at", :null => false 

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

rails g migration add_comment_to_user comment:text 

и вы можете отказаться от модели Comment, если это все, что вам нужно

Затем вы можете использовать форма у вас есть

<%= form_for(@user) do |f| %> 
    <%= f.text_field :name %> 
    <%= f.text_area :comment %> 
    <%= f.submit %> 
<% end %> 

Возможно, вы захотите добавить ярлыки к вашей форме также

<%= form_for(@user) do |f| %> 
    <%= f.label :name %> 
    <%= f.text_field :name %> 
    <%= f.label :comment %> 
    <%= f.text_area :comment %> 
    <%= f.submit %> 
<% end %> 

Надежда это получает вас на правильном пути

+0

Но если я пытаюсь добавить дополнительные комментарии к классу пользователя будет это не работает? Просто перезаписать? – Derptacos

+0

Я просто предполагал, что вам нужен один комментарий к форме пользователя. Да, если вы хотите сделать больше, чем добавить простой комментарий в форму пользователя, вам придется добавить модель комментария и принять accepts_nested_attributes_for. Если вы хотите добавить комментарии к модели пользователя и что-то вроде модели сообщений, посмотрите на полиморфные ассоциации. Его немного более продвинутый, но стоит усилий. Вы можете сделать пользователей и сообщения и т. Д. Комментариями для использования комментариев к нескольким моделям. – fontno

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