您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
在Rails应用中实现动态表单字段可以通过以下步骤实现:
在数据库中创建一个存储表单字段的表,例如Field表,包含字段名、字段类型等列。
创建一个模型类Field,用于操作Field表。
# app/models/field.rb
class Field < ApplicationRecord
belongs_to :form
end
# app/models/form.rb
class Form < ApplicationRecord
has_many :fields
end
<%= form_for @form do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<% @form.fields.each do |field| %>
<%= f.label field.name %>
<% case field.field_type
when 'text'
<%= f.text_field field.name %>
when 'textarea'
<%= f.text_area field.name %>
when 'checkbox'
<%= f.check_box field.name %>
when 'select'
<%= f.select field.name, options_for_select(field.options.split(',')) %>
end %>
<% end %>
<% end %>
# app/controllers/forms_controller.rb
def create
@form = Form.new(form_params)
if @form.save
redirect_to @form
else
render 'new'
end
end
private
def form_params
params.require(:form).permit(:name, fields_attributes: [:id, :name, :field_type, :options, :_destroy])
end
<%= link_to 'Add Field', new_field_path(form_id: @form.id) %>
# app/controllers/fields_controller.rb
def new
@form = Form.find(params[:form_id])
@field = @form.fields.build
end
def create
@form = Form.find(params[:form_id])
@field = @form.fields.build(field_params)
if @field.save
redirect_to @form
else
render 'new'
end
end
def destroy
@field = Field.find(params[:id])
@field.destroy
redirect_to @field.form
end
private
def field_params
params.require(:field).permit(:name, :field_type, :options)
end
通过以上步骤,可以在Rails应用中实现动态表单字段功能,用户可以根据需要添加不同类型的字段,并通过表单提交数据。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。