如何在javascript中访问当前rails对象id

如何在javascript中访问当前rails对象id,javascript,ruby-on-rails,ruby,ruby-on-rails-3,Javascript,Ruby On Rails,Ruby,Ruby On Rails 3,如果我在视图上,我如何访问该视图当前表示的ruby对象的ID 例如,如果我在blah.com/jobs/1上如何获得1 我曾想过修剪当前的URL,但这似乎太脆弱了,特别是考虑到我有嵌套的资源。我能想到的另一个简单的方法是有一个隐藏字段,但在没有任何表单的显示页面上有一个隐藏输入似乎很愚蠢。你是对的,解析URL是一个坏主意,最好在某个地方显式提供它 您可以将数据作业id属性附加到HTML中的标准元素,甚至可能是。然后,您的JavaScript可以执行以下操作: var id; var $body

如果我在视图上,我如何访问该视图当前表示的ruby对象的ID

例如,如果我在
blah.com/jobs/1上
如何获得1


我曾想过修剪当前的URL,但这似乎太脆弱了,特别是考虑到我有嵌套的资源。我能想到的另一个简单的方法是有一个隐藏字段,但在没有任何表单的显示页面上有一个隐藏输入似乎很愚蠢。

你是对的,解析URL是一个坏主意,最好在某个地方显式提供它

您可以将
数据作业id
属性附加到HTML中的标准元素,甚至可能是
。然后,您的JavaScript可以执行以下操作:

var id;
var $body = $('body');
if(id = $body.data('job-id'))
    // Do some job things.
else if(id = $body('user-id'))
    // Do some user things.
而且你仍然是HTML5兼容的,你不必到处乱搞隐藏的输入


您不必使用
当然,您的HTML可能有一些顶级容器,其中包含一个已知的
id
,因此您可以使用它。

不只是这样做吗?

我建议使用以下方法之一:

  • 正如Jamsi所建议的,在javascript中直接包含

    var id=

  • 如果您的javascript位于单独的文件中,请遵循Mu的建议。将
    添加到视图的一个html标记中,并查询它


  • 下面是一个完整的例子,结合已经提供的答案

    使用
    params[:id]
    和body元素,以下内联语句将生成一个
    data params id
    属性,该属性通常可在布局文件中使用:

    <body <%= "data-params-id=#{params[:id]}" if params.has_key?(:id) %> >
    
    jQuery:

    var dataId = document.body.getAttribute('data-params-id');
    
    var dataId = $('body').data('params-id');