Как добавить поле выбора динамически в рельсах 3.1.0? - PullRequest
0 голосов
/ 14 января 2012

Вот частичная форма _standards.html.erb, которую мы хотим динамически добавить к представлению:

  <p><%= f.association :standards, :collection => Standard.active_std.all(:order => 'name'), :label_method => :name, :value_method => :id :include_blank => true %></p>

Вот сама форма представления _form_new.html.erb, которая вызывает _standards.html.erb:

<%= simple_form_for @rfq do |f| %>    

  <div id="std">
  <%= render :partial => 'standards/standards', :collection => @rfq.standards, :locals => { :f => f } %>
  </div>
  <%= link_to_function("Add std", nil) do |page| %> 
    page.insert_html :bottom, 'std', :partial => 'standards/standards', :object => @rfq.standards.build 
  <% end %> 

  <%= f.button :submit, 'Save' %>  
<% end %> 

Это решение не работало, так как функция link_to_function не реагировала на щелчок при загрузке _standards.html.erb.Это решение кажется устаревшим и не работает в рельсах 3.1.0.Мне интересно, есть ли другое решение для добавления динамического контента на страницу просмотра в rails 3.1.0.Если вы это сделаете, пожалуйста, не стесняйтесь писать.Спасибо.

1 Ответ

2 голосов
/ 03 апреля 2012

Я знаю, что этот ответ придет через несколько месяцев после того, как он вам понадобится, но, надеюсь, это поможет кому-то еще, кто наткнется на этот вопрос. Вот как вы можете динамически добавлять поле выбора незаметно для вашего примера.

_form_new.html.erb

<%= simple_form_for @rfq do |f| %> 

  <a id="add-selection-box" href="#">Add Selection Box</a>
  <div id="std"></div>

  <script type="text/javascript">
    $(document).ready(function(){
      $("#add-selection-box").click(function() {  
        $("#std").append("<%= escape_javascript(render(:partial => 'standards/standards', :collection => @rfq.standards, :locals => { :f => f })) %>");
      });
    });
  </script>
<% end %>

Вот как вы можете сделать это, используя link_to_function

_form_new.html.erb

<%= simple_form_for @rfq do |f| %>
  <%= add_selection_box "Add Selection Box", @rfq.standards, f %>
  <div id="std"></div>
<% end %>

хелперы / my_form_helper.rb

module MyFormHelper
  def add_selection_box(name, collection, form)
    page = %{
      partial = "#{escape_javascript(render(:partial => "standards/standards", :collection => collection, :locals => { :f => form }))}";

      $("#std").append(partial);
    }

    link_to_function name, page
  end
end
...