2016-05-07 4 views
0

選択したアイテムに基づいてネストされた属性を作成するために、部分的にリロードする変更ajaxイベントが発生しました。このようなajaxリダイレクトでフォームビルダーを作成する方法

再読み込み部分的なルックスは、(それが重要ではないので、私はそれのほとんどをカットしています):

 = f.fields_for :skill_of_objects, @character.skill_of_objects.build do |ff| 
     %strong 
      = school_skill.skill.name_pl 
     = ff.hidden_field :skill_id, value: school_skill.skill.id 
     = ff.label :value 

問題がfビルダーです。

私はいくつかのスタックの研究を行って、私はこのようなものに終わっている>>this questionから最後の回答に基づいています

'<%= form_for [current_user, @character] do |f| %>' 
    $('#school_skills').html("<%= j render(partial: 'school_skills', locals: {f: f}) %>"); 
'<% end %>' 

をしかし、私はまだこのようなエラーが出る:

ActionView::Template::Error (undefined local variable or method `f' for #<#<Class:0xca1eb70>:0xd0811c0>): 

何か提案があります:)

+0

:真とあなたからfを渡すことができますので、変更のイベントでそれを提出フォーム – akshay

+0

"school_skills"をレンダリングするビューのファイル名とコンテンツを表示できますか? – thanhnha1103

+0

私はこの問題にすべてのthieを置いた、それはhepsを願っ:) – Kazik

答えて

1

私のエラーは、js.fileにありました。

$('#clan_select').html("<%= j render 'character_form_clan' %>"); 
$('#family_select').html("<%= j render 'character_form_families' %>"); 
$('#school_select').html("<%= j render 'character_form_schools' %>"); 
$('#character_honour').html("<%= j render 'character_honour' %>"); 
$('#character_outfit').html("<%= j render 'character_outfit' %>"); 
$('#school_skills').html("<%= j render 'school_skills' %>"); 
$('#character_<%= @old_school_bonus %>').val('2'); 
$('#character_school_bonus').val('<%= @selected_school.bonus_attr %>'); 
$('#character_<%= @old_family_bonus %>').val('2'); 
$('#character_family_bonus').val('<%= @selected_family.bonus_attr %>'); 
$('#character_<%= @selected_family.bonus_attr %>').val('<%= @increase_val %>'); 
$('#character_<%= @selected_school.bonus_attr %>').val('<%= @increase_val %>'); 
'<%= form_for [current_user, @character] do |f| %>' 
    $('#school_skills').html("<%= j render(partial: 'school_skills', locals: {f: f}) %>"); 
'<% end %>' 

私はschool_skillsを2回、2回目は| f |を使わずにレンダリングしました。ビルダー。 2番目のレンダリングを削除してから、すべてがうまくいきます。

'<%= form_for [current_user, @character] do |f| %>' 
    $('#school_skills').html("<%= j render(partial: 'school_skills', locals: {f: f}) %>"); 
'<% end %>' 

この部分はうまく動作し、これまでのところ私が見つけた最良の方法です。

0

あなたはまた、部分的に@objectとしてオブジェクトを渡すなどfields_forを使用することができます:あなたがリモートでから行う必要があり

= fields_for @object do |ff| 
     %strong 
      = school_skill.skill.name_pl 
     = ff.hidden_field :skill_id, value: school_skill.skill.id 
     = ff.label :value 
関連する問題