加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 嵌套表单没有出现!

发布时间:2020-12-17 03:27:51 所属栏目:百科 来源:网络整理
导读:我有一个嵌套的模型结构,如下所示: resources :users,:path = '/' do resources :accounts do resources :characters endend 我正在尝试获取帐户#new页面以显示两个表单但由于某种原因仅显示帐户表单(screenshot). 这是git:https://github.com/imjp/d2shed
我有一个嵌套的模型结构,如下所示:

resources :users,:path => '/' do
    resources :accounts do
        resources :characters
    end
end

我正在尝试获取帐户#new页面以显示两个表单但由于某种原因仅显示帐户表单(screenshot).

这是git:https://github.com/imjp/d2shed

account.rb

class Account < ActiveRecord::Base
attr_accessible :account_name,:realm
accepts_nested_attributes_for :characters

belongs_to :user
has_many :characters,:dependent => :destroy 

validates :account_name,:presence => 'true',:length => { :in => 4..20 },:uniqueness => 'true'

validates_presence_of :realm
validates_format_of :account_name,:with => /^[A-Za-zd_]+$/
end

accounts_controller.rb

def new 
    @user = User.find(params[:user_id])
    @account = Account.new
    @account.characters.build
end

_form.html.erb

<%= form_for([@user,@account]) do |f| %>
<div class="field">
<%= f.label :account_name %><br />
<%= f.text_field :account_name %>
</div>
<div class="field">
<%= f.radio_button(:realm,"USWest") %>
    <%= f.label(:realm,"USWest") %>

    <%= f.radio_button(:realm,"USEast") %>
    <%= f.label(:realm,"USEast") %>

    <%= f.radio_button(:realm,"Europe") %>
    <%= f.label(:realm,"Europe") %>

    <%= f.radio_button(:realm,"Asia") %>
    <%= f.label(:realm,"Asia") %>
 </div>     

<%= f.fields_for :character do |character_form| %>

        <div class="field"> 
            Name: <%= character_form.text_field :name %>
        </div> 
    <% end %>

 <div class="actions">
<%= f.submit %>
</div>
<% end %>

编辑:代码现在工作!

解决方法

你为什么要做field_for“..”?

你想要做的是<%= f.fields_for:characters%>因为它将遍历所有字符并根据帐户表单中的要求呈现字段.通过调用f对象上的fields_for,您告诉父表单它包含嵌套属性.

其次,您需要在表单中使用@account对象,而不是使用@ user.accounts.build构建另一个对象.通过这种错误的方式,您实际上创建了一个新的帐户对象,该对象不会为其预先构建任何字符对象.

除此之外,您还需要在帐户模型中指定accepts_nested_attributes_for:字符,以便表单将其与帐户参数一起接受.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读