【发布时间】:2015-03-20 06:26:22
【问题描述】:
我目前遇到一个问题,我正在尝试添加动态字段,并且它可以工作,但是我需要为在字段上动态生成的嵌套属性创建第二个模型。
我有一个非常简单的表单,它要求输入用户名,我希望能够允许用户单击一个按钮(“添加其他名称”)并动态添加该字段,然后添加另一个名称。我可以只使用一个模型和控制器,而不使用嵌套表单吗?
这是我目前拥有的,但我不希望它以这种方式工作:
控制器
class GuestsController < ApplicationController
skip_before_filter :authenticate_user!, only: [:new, :create]
def index
@guest = Guest.all
end
def new
guest = Guest.new
@guest_form = GuestForm.new(guest)
end
def show
@guest = Guest.find(params[:id])
end
def create
guest = Guest.new
@guest_form = GuestForm.new(guest)
@guest_form.submit(guest_params)
if @guest_form.save
respond_to do |format|
format.html { redirect_to :back, notice: 'Thank you for replying' }
format.js
end
else
respond_to do |format|
format.html { render :new }
format.js
end
end
end
def destroy
@guest = Guest.find(params[:id])
@guest.destroy
redirect_to guests_path
end
private
def guest_params
params.require(:guest).permit(:status, :name, :message, plusones_attributes: [:id, :name, :oldness, :_destroy])
end
end
型号:
class Guest < ActiveRecord::Base
has_many :plusones, dependent: :destroy
belongs_to :user
end
class Plusone < ActiveRecord::Base
belongs_to :guest
end
所以理想情况下,我想使用一个模型,并允许输入具有完全相同属性的其他字段,这意味着如果我有一个名称:字段,我应该能够单击“添加另一个名称”并添加该名称,这将在表中保存为单个客人,这意味着第一个客人的 guest_id 为 1,而为另一个客人动态添加的字段将添加一个 guest_id 为 2 的客人。
【问题讨论】:
-
你尝试过什么?请发布您的相关代码。
标签: ruby-on-rails ruby-on-rails-4 nested-forms