【发布时间】:2014-08-14 23:13:37
【问题描述】:
我试图让用户通过他们各自的连接表(锻炼设备,锻炼肌肉)在多对多关系中创建带有设备和肌肉的练习。我已经获得了用于在每次锻炼中添加一个设备/肌肉的表单,但无法弄清楚如何添加链接以动态添加另一个字段。
我查看了RailsCasts、this post,并在previous post of my own 上将其作为附带问题提出,但根本无法使用此功能。我对 Rails 4 还很陌生,并且仍在尝试学习 Javascript,但我希望能详细说明如何以 Rails 4 的方式设置它!
我的模特:
# id :integer
# name :string
# is_public :boolean
Exercise
has_many :exercise_equipment
has_many :equipment, :through => :exercise_equipment
accepts_nested_attributes_for :exercise_equipment
# id :integer
# exercise_id :integer
# equipment_id :integer
# optional :boolean
ExerciseEquipment
belongs_to :exercise
belongs_to :equipment
accepts_nested_attributes_for :equipment
# id :integer
# name :string
Equipment
has_many :exercise_equipment
has_many :exercises, :through => :exercise_equipment
我的控制器方法:
def new
@exercise = Exercise.new
@exercise.exercise_equipment.build
@exercise.exercise_muscles.build
end
def create
exercise = current_user.exercises.new( exercise_params )
if exercise.save!
redirect_to exercise
else
render 'new'
end
end
views/exercises/new.html.erb
<h1>Create New Exercise</h1>
<%= form_for @exercise do |f| %>
<%= render 'form', f: f %>
<%= f.submit "New Exercise" %>
<% end %>
视图/练习/_form.html.erb
<%= f.label :name %><br />
<%= f.text_field :name, autofocus: true %>
<%= f.check_box :is_public %> Public
<%= f.fields_for :exercise_muscles do |emf| %>
<%= emf.collection_select :muscle_id, Muscle.all, :id, :name, { include_hidden: false } %>
<% end %>
<%= f.fields_for :exercise_equipment do |eef| %>
<%= eef.collection_select :equipment_id, Equipment.all, :id, :name, { include_hidden: false } %>
<%= eef.check_box :optional %> Optional
<% end %>
【问题讨论】:
标签: javascript ruby-on-rails ruby ruby-on-rails-4