有没有人知道是否有一个简单的解决方案可以动态地将新选项添加到Rails表单中的选择菜单中?
Dynamic Forms railscast(http://railscasts.com/episodes/403-dynamic-forms)专注于根据在另一个选择菜单中进行的选择动态过滤第二个selet菜单,这不是我想要的。我正在寻找一种解决方案,其中表单只包含一个选择菜单,并且可以在表单上添加新选项。
我觉得解决方案可能类似于嵌套模型表单railscast(http://railscasts.com/episodes/196-nested-model-form-revised)中所涉及的解决方案,但在该示例中,必须在数据库中更新值之前提交表单。我希望用户能够添加新的选择菜单选项,然后在提交之前继续使用表单的其余部分。
在此阶段,我还想避免使用railscast jquery自动完成解决方案,因为它使用文本字段而不是选择菜单。
目前我看到解决方案在选择菜单旁边有一个“添加新”按钮。单击该按钮时,将打开一个模式,允许用户输入新的选择菜单选项,然后保存(更新数据库),关闭模式并更新表单。我只是想知道现有的优雅解决方案是否已经存在。
非常感谢任何帮助。
感谢。
更新:
我还没有创建任何代码来实现它,但这是我的表单:
<%= simple_form_for @other, :html => { :class => 'form-horizontal' } do |f| %>
<fieldset>
<%= f.error_notification %>
<%= f.association :other_type, :include_blank => false %>
<%= f.input :cost%>
<%= f.input :invoice %>
<%= f.input :notes, :input_html => {:class => "row-fluid"} %>
<%= f.error :base %>
<div id="eze_form_actions" class="form-actions">
<%= f.submit nil, :class => 'btn btn-primary' %>
<%= link_to 'Cancel', others_path, :class => 'btn' %>
</div>
</fieldset>
<% end %>
答案 0 :(得分:1)
我在CMS的类别中做了类似的事情,用户可以轻松添加新类别,我们POST到服务器,服务器响应HTML(通过部分渲染),然后将其注入我们的复选框中。您可以轻松复制此内容:
要实现这一点,您需要一个表单,一个端点和一些javascript:
<强>表格强>
不确定您的表单是什么,但请使用常规表单助手,并确保表单设置为remote: true
。
终点
你的端点应该呈现一个部分,它应该只包含我们将呈现给字符串的html的html并传回给要添加的前端。
def endpoint
# create your new model with the params
@model = Model.create(some: attribute)
if @model.errors.empty and @model.save
render json: { html: render_to_string(partial: "path/to/partial", locals: { model: @model })
end
end
** JavaScript **
$(form)
.bind('ajax:success', function(data, status) {
$(select).append(status.html)
})
status.html应该类似于<option>...</option>
,因此我们只需附加到我们的选择。
如果这没有意义,请告诉我。我希望它有所帮助。