我一直在尝试accepts_nested_attributes_for在我的rails应用程序中实现动态多模型表单.我一直在关注Eloy Duran的复杂形式示例,该示例显示了2级实现,但我一直在尝试将其扩展到3个级别.是否支持accepts_nested_attributes_for3级表格?谁能告诉我如何扩展示例应用程序?
我已经让第三级的javascript部分工作(并不总是因某种原因而工作),但是我无法保存第3级对象.它为每个属性传递的参数名称是:
greatgrandparent[grandparent_attributes][0][parent_attributes][0][object_attributes][1249277008434][attribute]
Run Code Online (Sandbox Code Playgroud)
如果greatgrandparent是表单所用的对象,祖父母是第一级,父级是第二级,对象是第3级(我想要保存的那个).
谢谢,我感谢任何指针.
我正在尝试使用formtastic创建一个嵌套的表单.我在下面列出了我的代码,但遇到了一些问题,我也在下面列出了这些问题.有什么建议?谢谢.
# Home model
class Home < ActiveRecord::Base
has_many :home_members
accepts_nested_attributes_for :home_members, :reject_if => :all_blank, :update_only => true, :allow_destroy => true
end
# Form builder in members/new.html.erb
<%= semantic_form_for @home, :url => home_members_path(@home), :html => { :method => :post }, :remote => true do |f| %>
<%= f.inputs do %>
<%= f.semantic_fields_for :home_members do |h| %>
<%= h.input :name %>
<%= h.input :email %>
<%= h.input :birthday, :as => :string %>
<% end %>
<% end %>
# members_controller's new …Run Code Online (Sandbox Code Playgroud) 我的用户模型has_many响应.我正在尝试创建一个嵌套表单来创建一个具有三个子响应的新用户.我的代码看起来与Rails强制转换相同,但是虽然它会保存用户,但它不会保存它们的响应.任何人都可以看到有什么问题?
users_controller.rb
class UsersController < ApplicationController
def new
@user = User.new
3.times{@user.responses.build}
@responses = @user.responses
end
def create
@user = User.new(user_params)
if @user.save
redirect_to @user #todo: where do we want to redirect?
else
render 'new'
end
end
def show
@user = User.find(params[:id])
@responses = @user.responses
end
def index
@users = User.all
end
private
def user_params
params.require(:user).permit(:username, :email, :responses)
end
end
Run Code Online (Sandbox Code Playgroud)
user.rb
class User < ActiveRecord::Base
attr_accessor :responses_attributes
has_many :responses, :dependent => :destroy
accepts_nested_attributes_for :responses#, :reject_if => lambda { |a| a[:content].blank? …Run Code Online (Sandbox Code Playgroud) i work on an application which have 1 module with many to many relationship, its working fine, i can create my "unit" with nested form, but i got 1 problem when i am on edit state, when i hit submit button it throw me an error.
No route matches [POST] "/units/27"
Run Code Online (Sandbox Code Playgroud)
i thought the action should be patch instead of post?? i inspect the generated html in browsers, and i can see there is a hidden field named "_method" with …
ruby ruby-on-rails nested-forms nested-attributes ruby-on-rails-4
我正在关注教程:http://www.amooma.de/screencasts/2015-01-22-nested_forms-rails-4.2/
我正在使用Rails 5.0.0.1
但是当我注册酒店时,似乎酒店类别必须存在.
1错误禁止此酒店被保存:类别酒店必须存在
我的酒店型号:
class Hotel < ApplicationRecord
has_many :categories, dependent: :destroy
validates :name, presence: true
accepts_nested_attributes_for :categories, reject_if: proc { |attributes| attributes['name'].blank? }, allow_destroy: true
end
Run Code Online (Sandbox Code Playgroud)
我的分类型号:
class Category < ApplicationRecord
belongs_to :hotel
validates :name, presence: true
end
Run Code Online (Sandbox Code Playgroud)
我的酒店管理员:
def new
@hotel = Hotel.new
@hotel.categories.build
end
def hotel_params
params.require(:hotel).permit(:name, categories_attributes: [ :id,:name])
end
Run Code Online (Sandbox Code Playgroud)
结束我的_form.html.erb
<%= f.fields_for :categories do |category| %>
<div class="room_category_fields">
<div class="field">
<%= category.label :name %><br>
<%= category.text_field :name %>
</div>
</div> …Run Code Online (Sandbox Code Playgroud) 我有一个Profile模特,那个accepts_nested_attributes_for :grades.
我的Grade模型看起来像这样:
# == Schema Information
#
# Table name: grades
#
# id :integer not null, primary key
# subject :string
# result :string
# grade_type :integer
# profile_id :integer
# created_at :datetime not null
# updated_at :datetime not null
class Grade < ActiveRecord::Base
belongs_to :profile
enum grade_type: { csec: 0, cape: 1, sat: 2, g7: 3, g8: 4, g9: 5, g10: 6, g11: 7, g12: 8, g13: 9 }
end
Run Code Online (Sandbox Code Playgroud)
在我 …
考虑一下这段代码snnipet:
<%= form_for @survey do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<%= f.fields_for :questions do |builder| %>
<%= render "question_fields", :f => builder %>
<% end %>
<p><%= f.submit "Submit" %></p>
<% end %>
Run Code Online (Sandbox Code Playgroud)
它会返回我有一些哈希(rails dev会知道).我的问题是如何在ReactJS中制作这种格式?接收与Rails默认完全相同的参数.至于现在,我只能在JSX中使用HTML标签.目前我在控制器中接收params并根据需要对它们进行排序(这看起来很糟糕).我已经测试了一些npm软件包,但是他们的文档似乎没有帮助!其中包括:https: //www.npmjs.com/package/react-rails-form-helpers
https://www.npmjs.com/package/react-form
这有什么npm包吗?使用react_on_rails gem和Rails 5稳定
我正在使用Rails 2.3.2,并试图让嵌套的对象表单正常工作.我已经将我的问题缩小到Rails未设置我的嵌套表单元素以及启动accepts_nested_attributes_for处理所需的*_attributes的问题.
我的型号代码是:
class Person < Party
has_one :name, :class_name => "PersonName"
accepts_nested_attributes_for :name, :allow_destroy => true
end
class PersonName < ActiveRecord::Base
belongs_to :person
end
Run Code Online (Sandbox Code Playgroud)
我的视图代码看起来像这样(我正在使用HAML):
%h3 New customer
= error_messages_for :person, :person_name, :name, :country
- form_for :person, :url => collection_url, :html => {:class => 'MainForm'} do |person_form|
- @person.build_name unless @person.name
- person_form.fields_for :name do |name_form|
= name_form.label :given_name, "First Name:"
= name_form.text_field :given_name
= name_form.label :family_name, "Last Name:"
= name_form.text_field :family_name
= hidden_field_tag :inviter_id, params[:inviter_id]
= hidden_field_tag :inviter_code, …Run Code Online (Sandbox Code Playgroud) 更新: 我在做了一些挖掘并意识到这可能是twitter-bootstrap导致问题后更新了这个.
这是我的嵌套表单的粗略版本:
<%= simple_nested_form_for @user, :html => { :class => 'form-horizontal' } do |f| %>
<fieldset>
<%= f.input :email %>
<%= f.input :name_first %>
<%= f.input :name_last %>
<table class="table table-striped">
<thead>
<tr>
<th>Active</th>
<th>Company</th>
<th>Role</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<%= f.simple_fields_for :roles, :wrapper_tag => :tr do |role_form| %>
<td><%= role_form.hidden_field :id %><%= role_form.input :active, :label => false, :wrapper => false %></td>
<td><%= role_form.association :company, :label => false, :wrapper => false %></td>
<td><%= role_form.input :role, :label => false, :collection …Run Code Online (Sandbox Code Playgroud) 我有一个通常的嵌套模型
class Parent
has_one :child
accepts_nested_attributes_for :child
end
class Child
belongs_to :parent
validate :name, :presence => true
end
Run Code Online (Sandbox Code Playgroud)
如果我试图保存一个没有名字的孩子,那么它是禁止的,但如果我保存了嵌套孩子的父母,如果忽略了验证.
我不想重复我的孩子验证:reject_if.
我如何验证孩子,并且只有在孩子有效的情况下,将父母与孩子一起保存?
nested-forms ×10
simple-form ×2
ajax ×1
forms ×1
formtastic ×1
has-many ×1
javascript ×1
node.js ×1
reactjs ×1
ruby ×1