2015-11-06 43 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