Javascript 将变量从js传递到rails视图而不刷新页面

Javascript 将变量从js传递到rails视图而不刷新页面,javascript,jquery,ruby-on-rails,ruby-on-rails-4,Javascript,Jquery,Ruby On Rails,Ruby On Rails 4,我想获取js变量的值,并在rails视图中使用它,而无需刷新页面。我不确定这是否是最好的方法 我有不同数量的标题可以点击。单击一个对象时,我希望获取该对象的值并将其传递给一个div,该div显示有关单击对象的信息 #drafts - @posts.all.each_with_index do |post, index| = link_to strip_tags(post.title), "#", id: "post#{index}" #post-view .title-edito

我想获取js变量的值,并在rails视图中使用它,而无需刷新页面。我不确定这是否是最好的方法

我有不同数量的标题可以点击。单击一个对象时,我希望获取该对象的值并将其传递给一个div,该div显示有关单击对象的信息

#drafts
  - @posts.all.each_with_index do |post, index|
  = link_to strip_tags(post.title), "#", id: "post#{index}"


#post-view
  .title-editor
    = post_that_was_clicked.title
  hr
  .body-editor
     = post_that_was_clicked.body
js:

我如何才能做到这一点?

有两个选项:

  • 使用单击事件侦听器获取标题。制作一个ajax,发送帖子的ID。服务器在数据库中查询该帖子,然后通过json将帖子的属性发送回客户端。然后你想用这些数据做什么就做什么

  • 在页面上转储帖子所需的所有属性,但这些属性是隐藏的。然后使用单击侦听器取消隐藏已单击的帖子


  • 我看不到你的JavaScript代码。你也可以发布吗?更新了一些jsFor选项2,这就是我最初的想法。但是我怎样才能为每篇文章动态地添加新的div,然后让css隐藏它,让js处理它的动作。选项2基本上就是不添加新div的方法。您可以在这里通过每次迭代创建div:
    @posts.all.each_with_index do | post,index |
    ,使用css类隐藏它们,然后使用JS以该元素为目标取消隐藏它。假设每个post对象看起来像。。。。您可以使用单击侦听器获取ID,然后
    $(“.post-$ID”).show()
    $('#drafts').click(function(e) {
      var txt = $(e.target).text();
      alert(txt);
    });