使用jquery为rails生成button_to标记

时间:2015-11-06 00:37:05

标签: javascript jquery ruby-on-rails ruby-on-rails-4

我正在尝试使用jquery基于rails事件向现有表添加行。 这一行中有rails代码。我的大多数功能都有效,但是这是一个大问题

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使用text.id文本而不是变量

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

有没有办法用jquery正确生成button_to,以便使用变量值而不是名称?

1 个答案:

答案 0 :(得分:1)

我认为这不可能,就像你在尝试一样。

您无法将javascript,及时中的变量作为ruby代码的参数传递,该代码仅在最初编译.erb模板时执行。

我认为你需要放弃以这种方式使用button_to,并用一种​​完全不同的方法来解决你的问题。

明显可行的方法,不知道这里发生了什么:不要在客户端渲染这个按钮:而是通过ajax从服务器获取它的html。

或者你仍然可以使用JavaScript,但只从rails获取基本路径。这样的事情:

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

工作正常。