2012-01-20 10 views
0

在我們的應用程序中,選擇框被動態添加到新的rfq表單中。問題不在於視圖,代碼打印在屏幕上。該代碼基於railscasts.com#197進行了一些修改。該應用程序在屏幕上打印代碼而不是視圖在rails 3.1.0

這裏是詢價代碼/ _form_new.html.erb:

<div id="std"> 
    <%= render :partial => 'standards', :collection => @rfq.standards, :locals => { :f => f } %> 
    </div> 
    <p><%= link_to_add_fields "Add Std", f, :standards, @rfq %></p> 

下面是點擊 「添加標準」 後的屏幕截圖:

screen shot for "Add Std"

這裏是link_to_add_fields:

def link_to_add_fields(name, f, association, obj) 
    if association == :standards 
     new_object = obj.standards.build 
    else 
     new_object = obj.test_items.build 
    end 

    link_to_function(name, "add_fields(this, \"#{association}\", \"escape_javascript(render :partial => association.to_s, :collection => new_object, :locals => { :f => f })\")") 
    end 

這裏是add_fields:

function add_fields(link, association, content) { 
    var new_id = new Date().getTime(); 
    var regexp = new RegExp("new_" + association, "g") 
    $(link).parent().before(content.replace(regexp, new_id)); 
}  

rfq與標準的關係是HABTM。在railscasts.com例子中,關係是has_many和belongs_to。

非常感謝您的幫助。

回答

1

問題是,你傳入一個字符串與escape_javascript ...在它的link_to_function。

你可能想立即呈現局部的,放進了link_to_function

link_to_function(name, "add_fields(this, \"#{association}\", #{escape_javascript(render :partial => association.to_s, :collection => new_object, :locals => { :f => f })})") 
+0

去掉引號之後嘗試。沒有呈現。沒有落後的斜線,第三個arg完全消失了,仍然沒有一百。 – user938363

+0

以下是帶有\:Add Std的html源代碼 – user938363