【问题标题】:Generating button_to tag for rails with jquery使用 jquery 为 rails 生成 button_to 标签
【发布时间】:2015-11-06 00:37:04
【问题描述】:

我正在尝试使用 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 使用文本 company.id 生成,而不是变量的值

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

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

【问题讨论】:

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


    【解决方案1】:

    我不认为这是可能的,正如你正在尝试的那样。

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

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

    显而易见的可能方法,但不知道这里发生了什么:不要在客户端呈现此按钮:而是通过 ajax 从服务器获取其 html。

    或者您仍然可以使用 JavaScript 来实现,但只能从 rails 派生基本路径。像这样的事情:

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

    会正常工作。

    【讨论】:

    • 谢谢你,这很有道理!
    • 其实我应该怎么设置按钮路径呢?尝试将 button_path 附加到 button_to 标记的 html 文本中时,我不会遇到同样的问题吗?现在它将在 html 中显示无效的“buttonPath”
    • 因此您需要通过添加 .js.erb 作为其扩展名来使您的 javascript 文件成为 erb 模板。然后,当它被 rails 编译/渲染时, 将被评估。关键区别在于您没有将客户端参数传递到 ruby​​ 代码中。您只需将 ruby​​ 代码的输出放入您的 javascript,一次。
    猜你喜欢
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多