【问题标题】:Getting an id of an ruby object with jquery使用 jquery 获取 ruby​​ 对象的 id
【发布时间】:2013-10-02 21:04:45
【问题描述】:

所以我有 ruby​​ 代码,可以简单地将我的所有对象写在某个视图中

%ul
    - @user.posts.each do |post|
        %li {data: {role: "choosable-post"}}
            = post.title

现在的诀窍是那些不是帖子本身,只是标题。如何使用 jQuery 获取特定帖子的 id?当然User has_many :posts 所以每个帖子都有自己的ID。

我想它可以像这样开始......

$("li[data-role=choosable-post]").onclick ->
    my_object = @(this)

但我真的不知道它是否是一个好的方向,或者如果它是如何继续......

【问题讨论】:

  • post 在 ruby​​ 中是否有 id 属性?如果是这样,那么按照他们在下面所说的去做。
  • jQuery 在客户端运行,只能访问 DOM,AJAX 除外。 Ruby 在服务器端运行,并且会在浏览器开始执行任何 JavaScript 之前很久就完成执行。两者不能直接互动。

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


【解决方案1】:

您已经在使用数据字段,在其中存储有关对象的信息非常常见:

%ul
  - @user.posts.each do |post|
    %li {data: {role: "choosable-post", id: "#{post.id}"}}
      = post.title

现在它在您选择的元素中,所以它应该是这样的:

$("li[data-role=choosable-post]").onclick ->
  my_object_id = $(this).data('id')

JavaScript 未经测试,但应该会给你这个想法。

【讨论】:

    【解决方案2】:
    %ul
      - @user.posts.each do |post|
        %li {data: {role: "choosable-post", id: "#{post.id}"}}
          = post.title
    

    会给你id,然后,在你的HTML中,你应该能够找到id,如下图所示:http://jsfiddle.net/gG2gs/2/

    【讨论】:

      【解决方案3】:

      将帖子 ID 渲染为数据属性

      %li {class: "post-container", data: {role: "choosable-post", post-id: post.id}}
      

      使用 jquery 检索客户端

      $(".post-container").click ->
        li = $(this)
        console.log(li.data('post-id'))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-21
        • 2019-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多