How to render a RAILS partial with local variable f in new.js.erb?

半世苍凉 提交于 2019-12-30 04:45:10

问题


There is a way to render a erb page in js.erb like this with :remote => true in rails:

$('#invoice_against_lease').html('$("<%= j render(:file => 'invoice/new.html.erb') %>")');

We have a partial _customer_quote_record like this:

   <%= f.input :quote_id, :label => 'Quote#:', :collection => quotes_for_invoice(@customer), :include_blank => true %>
   <%= f.hidden_field :_destroy %>  

The partial is rendered in html.erb as this, with passing local variable builder:

<%= f.simple_fields_for :invoice_items do |builder| %>
  <%= render 'customer_quote_record', :f => builder %>
<% end %>

Tried the code below:

$('#invoice_against_lease').html('$("<%= j render(:file => 'customer_lease_record', :f => f) %>")');

And the error is "ActionView::Template::Error (undefined local variable or methodf'..."`

Is there a way to render the partial above in js.erb?


回答1:


Try the following:

$('#invoice_against_lease').html('$("<%= j render(:partial => 'customer_lease_record', :locals => {:f => f}) %>")');

This of course assumes that f is defined wherever you make this call. If it's different, just change :locals => {:f => f} to :locals => {:f => "YOUR_VARIALBE"}




回答2:


Look at this, I found a solution:

in js.rjs file, I repdroduce the form_for and fields_for helper, and save the fields_for constructor in a instance variable @builder, and then I pass it to the partial (locals: {f: @builder...)

js.rjs:

<%
  @expense=Expense.new
  new_expense_detail=@expense.expense_details.build
  form_for(@expense) do |f| 
    f.fields_for(:expense_details,new_expense_detail,:child_index=>@child_index) do |builder| 
      @builder=builder # <<--- New line compared js.rjs
    end
  end
%>

$("#cost_center_group_<%=@child_index%>").html("<%= escape_javascript(render(partial: 'select_costcenter', locals: {f: @builder,child_index: @child_index}))%>");



回答3:


Another way to do it:

<%=j render "invoice/new", f: f %>



来源:https://stackoverflow.com/questions/11691612/how-to-render-a-rails-partial-with-local-variable-f-in-new-js-erb

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!