刚接触rails,如果答案很明显,请道歉。如果我有 2 个模型,一个用户和评论,一个 (1 : N) 关系。当我创建用户时,我也在创建评论。
我遇到的麻烦是如何编写表单,或者评论将与用户关联是用户类所固有的吗?
<%= form_for(@user) do |f| %>
<%= f.text_field :name %>
<%= f.text_area :comment ???? %>
<%= f.submit %>
<% end %>
刚接触rails,如果答案很明显,请道歉。如果我有 2 个模型,一个用户和评论,一个 (1 : N) 关系。当我创建用户时,我也在创建评论。
我遇到的麻烦是如何编写表单,或者评论将与用户关联是用户类所固有的吗?
<%= form_for(@user) do |f| %>
<%= f.text_field :name %>
<%= f.text_area :comment ???? %>
<%= f.submit %>
<% end %>
我想你有一个评论模型,所以......
在 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 %>
假设您的用户表单是正确的,您只需在用户模型中添加注释作为属性。为此,您不需要单独的评论模型。
# 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 %>
希望这能让你走上正确的轨道