Jquery 如何在Rails中动态添加选择菜单选项

Jquery 如何在Rails中动态添加选择菜单选项,jquery,ruby-on-rails,ruby-on-rails-3,Jquery,Ruby On Rails,Ruby On Rails 3,有人知道有没有一个简单的解决方案可以在Rails的表单中动态地向选择菜单添加新选项 动态表单railscast()的重点是基于在另一个选择菜单中所做的选择动态过滤第二个选择菜单,这不是我想要的。我正在寻找一个解决方案,其中的形式只包含一个选择菜单和新的选项可以添加到它的形式 我觉得解决方案可能与嵌套模型表单railscast()中提到的类似,但在该示例中,必须在数据库中更新值之前提交表单。我希望用户能够添加一个新的选择菜单选项,然后在提交表单之前继续表单的其余部分 在此阶段,我还希望避免使用ra

有人知道有没有一个简单的解决方案可以在Rails的表单中动态地向选择菜单添加新选项

动态表单railscast()的重点是基于在另一个选择菜单中所做的选择动态过滤第二个选择菜单,这不是我想要的。我正在寻找一个解决方案,其中的形式只包含一个选择菜单和新的选项可以添加到它的形式

我觉得解决方案可能与嵌套模型表单railscast()中提到的类似,但在该示例中,必须在数据库中更新值之前提交表单。我希望用户能够添加一个新的选择菜单选项,然后在提交表单之前继续表单的其余部分

在此阶段,我还希望避免使用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 %>
{:class=>'form horizontal'}do | f |%>
假%>
{:class=>“行流体”}%>
“btn btn主节点”%>
'btn'>

我在我们的CMS类别中做了类似的事情,用户可以轻松添加一个新类别,然后我们发布到服务器,服务器用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应该类似于
,因此我们只需将其附加到select


如果这不合理,请告诉我。我希望它能有所帮助。

我在我们的CMS中也做了类似的分类,用户可以轻松地添加一个新的分类,然后我们发布到服务器上,服务器用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应该类似于
,因此我们只需将其附加到select


如果这不合理,请告诉我。我希望它能有所帮助。

发布您的代码以及一些javascript魔术,您可以让它看起来完全像动态表单和所有这些宝石……好吧,我是一个新手,所以如果没有现有的解决方案,那就意味着我有一点阅读如何使用javascript实现它。谢谢你的帮助。发布你的代码并使用一些javascript魔法,你可以让它看起来完全像动态表单和所有那些宝石…好吧,我是一个新手,所以如果没有现有的解决方案,那就意味着我有一些关于如何用javascript实现它的阅读。谢谢你的帮助。非常感谢你花时间帮忙。我以前从未听说过端点,我能找到的最好的定义是“机架端点只是一个符合机架规范的应用程序”。在我的项目中,我把端点放在哪里?您在GitHub上有没有一个例子?endpoint只是一个路由,就像您将数据发布到的
/path/to/endpoint
。在您的例子中,它是@other的
简单形式的任何内容。这有意义吗?我正在尽我最大的努力保持在这里。我的表单不需要保持不变,这样我就可以像往常一样提交以添加新项目等。选择菜单是否提交自己的表单?非常感谢您花时间提供帮助。我以前从未听说过端点,我能找到的最好的定义是“机架端点只是一个符合机架规范的应用程序”。在我的项目中,我把端点放在哪里?您在GitHub上有没有一个例子?endpoint只是一个路由,就像您将数据发布到的
/path/to/endpoint
。在您的例子中,它是@other的
简单形式的任何内容。这有意义吗?我正在尽我最大的努力保持在这里。我的表单不需要保持不变,这样我就可以正常提交以添加新项目等。选择菜单是否提交自己的表单?