2013-02-24 131 views
1

有谁知道是否有一个简单的解决方案来向Rails中的表单中的选择菜单动态添加新选项?如何在Rails中动态添加选择菜单选项

Dynamic Forms railscast(http://railscasts.com/episodes/403-dynamic-forms)专注于根据另一个选择菜单中的选择动态地过滤第二个菜单菜单,这不是我正在寻找的菜单。我正在寻找一个解决方案,其中表单只包含一个选择菜单,并且可以在表单上添加新选项。

我觉得解决方案可能与嵌套模型表单railscast(http://railscasts.com/episodes/196-nested-model-form-revised)中涉及的类似,但在该示例中,表单必须在数据库中的值更新之前提交。我希望用户能够添加新的选择菜单选项,然后在提交之前继续完成表单的其余部分。

在这个阶段,我还想避免使用railscast jquery自动填充解决方案,因为它使用文本字段而不是选择菜单。

目前我看到解决方案在选择菜单旁边有一个“添加新”按钮。单击按钮时,将打开一个Modal,允许用户输入新的选择菜单选项,然后保存(更新数据库),模式关闭并更新表格。我只是想知道现有的优雅解决方案是否已经存在。

任何帮助将不胜感激。

谢谢。

UPDATE:

我还没有创建任何代码,但实现这个,但这里是我的形式:

<%= 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 %> 
+1

发布您的代码以及 – Shail 2013-02-24 04:48:36

+0

随着一些JavaScript的魔术,你可以使它看起来完全像动态表格和所有这些宝石... – gmaliar 2013-02-24 21:07:59

+0

好吧,我有点新手,所以如果没有现有的解决方案那么意味着我有一些关于如何使用javascript实现它的阅读。谢谢你的帮助。 – Marklar 2013-02-24 22:07:31

回答

1

我做过类似这样的东西在我们的CMS的类别,用户可以轻松地添加一个新类别,然后POST到服务器,该服务器使用HTML进行响应(通过部分渲染),然后将其注入到我们的复选框集合中。您可以轻松地复制此为您的目的:

为了得到这个工作,你需要你的一个形式,一个端点和一些javascript:

不知道你在做什么表格将包括,但使用常规形式助手,并确保表格设置为remote: true

终点

你的终点应该呈现的部分,它应该只包含在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>,所以我们只是追加到我们的选择。

让我知道这是否没有意义。我希望它有帮助。

+0

非常感谢您花时间帮忙。我以前从来没有听说过端点,我能找到的最佳定义是“机架端点只是符合Rack规范的应用程序”。我的项目在哪里放置我的端点?你有没有在GitHub上的例子? – Marklar 2013-04-23 23:17:45

+0

而端点只是一个路由,就像您将数据发布到的'/ path/to/endpoint'一样。就你而言,无论这是呈现给“simple_form_for @ other”。那有意义吗? – johnkoht 2013-04-23 23:24:03

+0

我正尽力保持在这里。我的表单是否需要保持不变,因此我仍然可以正常提交它以添加新项目等。选择菜单是否提交自己的表单? – Marklar 2013-04-23 23:45:07

相关问题