rails嵌套表单字段未呈现

时间:2015-08-13 00:28:36

标签: ruby-on-rails ruby validation ruby-on-rails-4

我正在尝试使用两个模型中的以下字段创建图书咨询表

用户模型  - 名字  - 姓   - 电子邮件   - contact_number

消息模型

  • :MESSAGE_TEXT

呈现的所需表单应该向用户显示所有用户模型字段以及文本区域,该区域将是:消息模型的message_text。

用户模型的代码

class User < ActiveRecord::Base

  has_many :messages

  validates :first_name , presence: true
  validates :last_name , presence: true
  validates :email, presence: true
  validates :contact_number,presence: true

  accepts_nested_attributes_for :messages
end

消息模型代码

class Message < ActiveRecord::Base

  validates :message_text, presence: true
    belongs_to :user , :class_name => 'User', :foreign_key  => 'id'

end

呈现表单的User的索引控制器类似于

def index
  @users = User.all
  @user = User.new
  @user.messages.build
end

视图文件类似于

<%= form_for(@user)  do |f| %>

        <div class="form-group">
            <%= f.label :first_name %>
            <%= f.text_field :first_name %>
        </div>

        <div class="form-group">
            <%= f.label :last_name %>
            <%= f.text_field :last_name %>
        </div>

        <div class="form-group">
            <%= f.label :email %>
            <%= f.text_field :email %>
        </div>

        <div class="form-group">
            <%= f.label :contact_number %>
            <%= f.text_field :contact_number %>
        </div>

        <div class="form-group">
        **the fields_for does not get rendered at all into the HTML** 
            <%= f.fields_for :messages do |ff| %>
                <%= ff.label :message_text %>
                <%= ff.text_field :message_text %>
            <% end %>
        </div>

        <div class="btn primary-btn">
            <%= f.submit 'Book Free Consultation'%>
        </div>

渲染所有其他字段。任何人都可以帮我找出错误。提前谢谢

1 个答案:

答案 0 :(得分:0)

您的迁移文件应如下所示

class DeviseCreateUsers < ActiveRecord::Migration
  def change
    create_table(:users) do |t|
      t.string :first_name
      t.string :last_name
      t.string :email
      t.string :contact_number
    end
  end
end

class CreateMessages < ActiveRecord::Migration
  def change
    create_table(:messages) do |t|
      t.string :message_text
      t.references :user, index: true
    end
  end
end