2015-11-06 42 views
1

我想添加一行到基於rails事件使用jquery的現有表。 此行中有導軌代碼。我的大部分功能的作品,但那裏有一個很大的問題使用jquery生成button_to標籤爲rails與jquery

function addCompanyRow(company) { 
    var row_class = 'fav_company_'+company.id; 
    $('#current_favorites tr:last').after(
    '<tr class=\"'+ row_class+'\"><td>'+company.id+'</td><td>'+company.symbol+'</td><td>'+company.name+'</td><td>' 
    +'<%= button_to remove_favorite_path('+company.id+'), method: :patch, remote: true, class: "btn btn-default" do%> <i class="glyphicon glyphicon-remove"></i> <% end %>' 
    +'</td></tr>' 
    ).animate("slow"); 
} 

但是,由於這一部分的

'<%= button_to remove_favorite_path('+company.id+'), 

的HTML與文本company.id而不是變量

<form class="button_to" method="post" action="/favorite/remove/+company.id+" data-remote="true"> 
的價值產生

有沒有辦法使用jquery正確生成button_to,以便使用變量值而不是名稱?

回答

1

我不認爲這是可能的,正如你試圖。

您不能從javascript,返回時間爲的變量作爲ruby代碼的參數,該代碼僅在最初編譯.erb模板時執行。

我認爲你需要放棄以這種方式使用button_to,並用一種​​完全不同的方法解決你的問題。

明顯可能的方法,不知道這裏發生了什麼:不要渲染這個按鈕客戶端:而是通過ajax從服務器獲取它的html。

或者你仍然可以用JavaScript來做,但只能從rails中派生出基本路徑。像這樣的事情:

var buttonPath = '<%= remove_favorite_path %>/' + id; 

將工作正常。

+0

謝謝你,這是有道理的! – Sakib

+0

其實,我會如何設置按鈕路徑?試圖將button_path追加到我的html文本中button_to標記時,我碰到同樣的問題嗎?現在它會在html中顯示'buttonPath',這將是無效的 – Sakib

+0

因此,您需要通過添加.js.erb作爲其擴展名使您的JavaScript文件成爲erb模板。然後,當它由rails編譯/呈現時,將會評估<%= remove_favorite_path%>。關鍵的區別是你不能將客戶端參數傳遞給ruby代碼。你只是把ruby代碼的輸出放到你的javascript中,一次。 – robomc