フォームのパーシャルが動的に呼び出されたときに、 Chosen プラグインが呼び出されない理由がわかりません。
相対宝石 -
rails, 3.1.0
cancan, 1.6.7
dynamic_form, 1.1.4
simple_form, 2.0.1
jquery-rails
シナリオ -
というページがあり、 、または/index
を追加できます。ページは空白で始まりますが、クリックしてフォームの 1 つを動的に表示できるリンクが側面にあります。これらのフォームは、独自のパーシャルにあります。House
Dog
Cat
犬コントローラー
def new
@dog = Dog.new
respond_to do |format|
format.js
end
end
Dogs/_form.html.erb
<%= simple_form_for(@dog, :remote => true, :html => { :class => 'form-horizontal span8' }) do |f| %>
<%= render :partial => "shared/error_message", :locals => { :f => f } %>
<%= f.association :house, :prompt => "Select a House", :input_html => { :id => "house-select", :class => "span4" } %>
<%= f.button :submit, 'Done', :class => 'btn-primary span2' %>
<% end %>
ページコントローラー
def index
@cats = current_user.cats.all
@dogs = current_user.dogs.all
respond_to do |format|
format.html
end
end
ページ/index.html.erb
<li><%= link_to "Dog", new_dog_path, :remote => true %></li>
<li><%= link_to "Cat", new_cat_path, :remote => true %></li>
<div id="generate-form">
<div class="ajax-loader"></div>
</div>
犬/new.js.erb
$("#generate-form").html("<%= escape_javascript(render(:partial => 'dogs/form', locals: { dog: @dog })) %>");
このコードはすべて、リンクをクリックすると、選択したフォームを正常に表示します。私の犬のモデルは猫のモデルと同じです。これらは、Chosen プラグインの問題があるものです。いずれかのフォームが表示されたときに Chosen プラグインが検出されないのはなぜですか?
答え
犬/new.js.erb
$("#generate-form").html("<%= escape_javascript(render(:partial => 'dogs/form', locals: { dog: @dog })) %>");
$('.house-select').chosen();