2014-11-03 53 views
0

這裏是爲Rails 3.2的應用程序代碼new.js.erb文件:如何在Rails 3.2的字符串中渲染js.erb文件?

<% if params[:order][:field_changed] == 'quote_id' && @digi_keys.present? %> 
    <% @quote_ids.each_with_index do |v, i| %> 
    <% quote = PurchaseOrderx.quote_class.find_by_id(v)%> 
    <% if quote %> 
     $('#order_order_items_attributes_' + <%[email protected]_keys[i]%> + '_product_name').val("<%=quote.product_name%>"); 
     $('#order_order_items_attributes_' + <%[email protected]_keys[i]%> + '_product_spec').val('<%=quote.product_spec%>'); 
     $('#order_order_items_attributes_' + <%[email protected]_keys[i]%> + '_unit_price').val('<%=quote.unit_price%>'); 
     $('#order_order_items_attributes_' + <%[email protected]_keys[i]%> + '_unit').val('<%=quote.unit%>');  
    <% else %> 
     $('#order_order_items_attributes_' + <%[email protected]_keys[i]%> + '_product_name').val(''); 
     $('#order_order_items_attributes_' + <%[email protected]_keys[i]%> + '_product_spec').val(''); 
     $('#order_order_items_attributes_' + <%[email protected]_keys[i]%> + '_unit_price').val(''); 
     $('#order_order_items_attributes_' + <%[email protected]_keys[i]%> + '_unit').val(''); 
    <% end %> 
    $('#order_order_items_attributes_' + <%[email protected]_keys[i]%> + '_qty').val(''); 
    $('#order_order_items_attributes_' + <%[email protected]_keys[i]%> + '_item_note').val(''); 
    $('#order_po_total').val(''); 
    <% end %> 
    $('#order_field_changed').val(''); 
<% end %> 

我們試圖做的是上面的代碼保存成js_erb_code字符串和渲染。由於js_erb_code將jquery/javascript和erb代碼混合在一起,我們不確定我們應該在new.js.erb中使用哪個渲染選項?

<% render inline: js_erb_code %> 

或者

<% render js: js_erb_code %> 

或者這種編碼的做法是有問題的。

有人可以闡明這一點嗎?非常感謝。

+0

你問'如何渲染一個部分從js.erb文件'? – mohameddiaa27 2014-11-03 18:11:53

+0

你的代碼很難閱讀,看起來很醜。你應該在控制器中使用這些if else語句,而不是在你的js文件中。根據你的編碼渲染不同的文件 – Mandeep 2014-11-03 18:21:11

+0

@@ mohameddiaa27,是的,它是關於如何渲染。 – user938363 2014-11-03 18:36:27

回答

1

是的,你的js.erb應該工作得很好,只要你不在html中混合。你可以用它把它變成一個字符串:

erb = ERB.new("js_erb_code") 
render erb.result 
+1

@@ isaacsloan,js_erb_code是保存erb視圖代碼的字符串變量。在ERB.new()中,js_erb_code是否需要引號和未加引號? – user938363 2014-11-04 04:09:44

+1

這裏是工作的代碼:render inline:ERB.new(@js_erb_code).result(binding) – user938363 2014-11-06 02:25:45