0

Railsは初めてです。答えが明らかな場合はお詫び申し上げます。2 つのモデル、ユーザーとコメント、(1 : N) の関係がある場合。ユーザーを作成すると、コメントも作成されます。

私が抱えている問題は、フォームをどのように書くか、またはコメントがユーザーに関連付けられるのはユーザークラスに固有のものですか?

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

2 に答える 2

1

I suppose you have a model for comments so....

Add this in user.rb

has_many :comments
accepts_nested_attributes_for :comments

And in your controller?

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

And in your form view:

<%= form_for @user do |f| %>
  <%= f.text_field :name %>
  <%= f.fields_for :comments do |comment_form| %>
    <%= comment_form.text_field :description %>
  <% end %>
<% end %>
于 2013-05-15T00:19:45.337 に答える
0

User フォームが正しいと仮定すると、User モデルに属性としてコメントを追加するだけです。これには別のコメント モデルは必要ありません。

# 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

これで十分な場合は、コメントモデルを削除できます

その後、フォームをそのまま使用できます

<%= 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 %>

これがあなたを正しい軌道に乗せることを願っています

于 2013-05-15T00:17:16.943 に答える