Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rails 3将变量从link_传递到javascript_Javascript_Ruby On Rails_Ruby On Rails 3_Coffeescript - Fatal编程技术网

Rails 3将变量从link_传递到javascript

Rails 3将变量从link_传递到javascript,javascript,ruby-on-rails,ruby-on-rails-3,coffeescript,Javascript,Ruby On Rails,Ruby On Rails 3,Coffeescript,如果用户在表单页面上,如果他们没有单击“更新”按钮就离开了,我会尝试抛出一条确认消息 我使用的coffeescript代码如下 # used to detect if a user is navigating off a page if form_click == true window.onbeforeunload = -> "You have unsaved data! do you really want to exit?" 如果我使用If 1==1或1==2作为测试用

如果用户在表单页面上,如果他们没有单击“更新”按钮就离开了,我会尝试抛出一条确认消息

我使用的coffeescript代码如下

# used to detect if a user is navigating off a page
if form_click == true
  window.onbeforeunload = ->
    "You have unsaved data! do you really want to exit?"
如果我使用If 1==1或1==2作为测试用例,那么它工作得非常好。但是,我很难从link_发送一个变量到code来设置form_click

我试过以下方法

<%= f.button :button, :class => 'btn-primary',
            data: {form_click: true},
            remote: true %>
“btn主节点”,
数据:{form_click:true},
远程:真%>

但是我无法将变量传递给coffeescript代码。我肯定不精通javascript和coffeescript,这可能表明了这一点,如果有任何关于如何解决此问题的建议,我将不胜感激。请查看生成的HTML。我怀疑到的
链接创建了类似于以下内容的内容:

<button class="btn-primary" data-form_click="true" data-remote="true"></button>
上面的代码是现成的,但主要的一点是按钮上的属性是字符串,而不是布尔值,因此需要进行相应的调整


使用JS调试工具放置断点,以便您可以检查
表单的值。单击
也是查看您应该比较的内容的另一种方式。

非常好的捕获:“按钮上的属性是字符串”。正如CoffeeScript测试中值和类型的
==
(如JavaScript中的
==
)一样,OP应该使用字符串
'true'
而不是布尔值
true
。顺便说一句,
attr()
总是返回一个字符串,而
data()
尝试转换为其他本机类型(请参阅)Huh-我从未在jQuery文档中看过
data()
。如果$(this.data('form_click')
,您可以将条件减少到
,看起来更好
$('data-form_click').click( ->
  if $(this).attr('data-form_click') == 'true'
    window.onbeforeunload = ->
      confirm("You have unsaved data! Do you really want to exit?")
)