У меня такое поведение, которого я не понимаю.
Нажмите на ссылку link_to: remote => true
< %= link_to "bros", new_wizard_path(:idparent= >wz.idparent, :id= >wz.id), :remote => true %>
контроллер подготовит новый экземпляр @wizard
def new
@wizard = Wizard.new
@wizard.idparent = flash[:id_of_parent]
flash[:id_of_parent] = nil
@wizard.idparent ||= params[:idparent]
end
а затем вызывает соответствующий js.erb,
$('#divwizard').append('<div id="wizardnew"></div>');
$('#wizardnew').html('<%=j (render(:partial => "wizards/new")) %>');
и это последнее вызывает частичный вид
< %= render :partial = > "wizards/form" % >
<%= form_for @wizard, :remote => true do |wiz| %>
< div class="edt_wiz" >
< div class="edt_wiz_pos" >
<%= wiz.label :pos, :class => "pos"%>
<%= wiz.text_field :pos %>
но в журнале webrick я читал двойной вызов в * _new.html.erb *
Started GET "/wizards/new?id=126" for 127.0.0.1 at 2013-10-21 19:08:51 +0200
Processing by WizardsController#new as JS
Parameters: {"id"=>"126"}
Rendered wizards/_form.html.erb (5.7ms)
Rendered wizards/_new.html.erb (6.9ms)
Rendered wizards/_form.html.erb (6.3ms)
Rendered wizards/_new.html.erb (7.1ms)
Rendered wizards/new.js.erb (17.7ms)
Completed 200 OK in 79ms (Views: 28.0ms | ActiveRecord: 0.9ms)
что происходит?
который называет частичный _new.html.erb дважды?
Кто-нибудь может мне помочь, пожалуйста? Как я могу отладить эту ситуацию?
EDIT I
Я пропустил часть кода (извините!).
есть условие javascript !! :
if (something) {
$('#divwizard').append('<div id="wizardnew"></div>');
$('#wizardnew').html('<%=j (render(:partial => "wizards/new")) %>');
} else {
$('#otherdiv').append('<div id="wizard-other-new"></div>');
$('#wizard-other-new').html('<%=j (render(:partial => "wizards/new")) %>');
}
и erb, я думаю (?), выполняю оба рендера: partial, потому что условие находится в javascript, а затем выполняется после локального браузера.
Я смущен или прав?
Это может быть так, потому что вы не передаете формат между вызовами рендера.
Попробуйте добавить format: params[:format]
к вызовам рендеринга внутри частичных файлов.
Если это не решит проблему, то повышение параметров или формата, непосредственно относящихся к рассматриваемым вызовам рендеринга, может дать вам указания относительно того, что происходит.
flash
для хранения временных вещей, они имеют совсем другое назначение. Доступ к вашим данным черезparams
.