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 method
f'..."`
Is there a way to render the partial above in js.erb?
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"}
Another way to do it:
<%=j render "invoice/new", f: f %>
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
[email protected]_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}))%>");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With