如何在javascript中访问当前rails对象id
How to access the current rails object id in javascript
如果我在一个视图上,我如何访问该视图当前表示的ruby对象的ID?
例如,如果我在blah.com/jobs/1
上,如何获得1?
我想过修剪当前的URL,但这似乎太脆弱了,尤其是考虑到我有嵌套的资源。我能想到的唯一另一个简单的方法是有一个隐藏的字段,但在没有任何表单的显示页面上有隐藏的输入似乎很愚蠢。
解析URL是个坏主意,这是对的,最好在某个地方显式提供它。
您可以将data-job-id
属性附加到HTML中的标准元素,甚至可能是<body>
。然后你的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,并且不必使用隐藏的输入。
当然,您不必使用<body>
,您的HTML可能有一些具有已知id
的顶级容器,因此您可以使用它。
我建议使用以下方法之一:
-
正如Jamsi所建议的,将
<%= params[:id] %>
或<%= @job[:id] %>
直接包含在javascript:中var id = <%= @job[:id] %>
-
如果您的javascript在一个单独的文件中,请遵循Mu的建议。将
<%= @job[:id] %>
添加到视图的一个html标签中,并对其进行查询
不会只是<%=params[:id]%>会这么做吗?
下面是一个完整的例子,结合已经提供的答案。
使用params[:id]
和body元素,以下内联语句将生成一个data-params-id
属性,该属性可以在布局文件中通用:
<body <%= "data-params-id=#{params[:id]}" if params.has_key?(:id) %> >
然后可以通过以下方式访问:
JavaScript:
var dataId = document.body.getAttribute('data-params-id');
jQuery:
var dataId = $('body').data('params-id');
相关文章:
- Rails将JavaScript对象存储到Model的有效方式
- Rails 'nil' 不是与 ActiveModel 兼容的对象.它必须实现:to_partial_path.阿贾克斯
- Rails的问题,haml + javascript在字段对象的模糊
- 如何使用rails 3.1.4中的FormBuilder.new构建表单生成器对象
- Rails使用ajax调用更新多态对象的表部分
- Rails:如何将JS对象转换为数组参数
- Rails结构到JSON对象
- 访问Javascript中的Rails子对象
- 对象不支持此属性或方法 Rails Windows 64 位
- 一个 rails 字段,它是 JSON 对象的数组
- Rails JavaScript 包含 TypeError:“null”不是一个对象(评估 'document.
- “未定义”使用 Rails 对象传递数据属性
- Rails:如何使用 JavaScript 滑块显示 ActiveRecord 对象
- 使用jquery检查rails对象
- 如何在javascript中访问当前rails对象id
- 如何使用rails对象在选择下拉列表中设置选项的值's的id
- 将从sql数据库检索到的ruby on rails对象存储到javascript对象中
- 使用AJAX/Javascript创建Rails对象
- 你能调用Jbuilder来创建一个原生Rails对象而不是一个呈现的字符串吗?
- JSON对象转换为rails对象