javascript - 如何选择由 ruby​​ 实例变量表示的动态 ID?

标签 javascript jquery ruby-on-rails ruby ruby-on-rails-4

所以我有一个 div在我看来,其 ID 由实例变量填充:

<div class="card" id="card-<%= @card_number %>">

在我的create.js.erb ,如何选择该 div?

我尝试过这个:

$('#<%= @card_id %> .card-comments').prepend("<%= j (render partial: 'nodes/comment', locals: { comment: @comment}) %>");

但它不起作用,并在选择器中输出 ID 的空白值。如何让它选择正确的 ID?

我也尝试过$('#<%= j @card_id %> .card-comments').prepend...但这也行不通。

编辑 1

这是在 View 中生成动态 ID 后缀的代码:

    <% @card_number = 0 %>
      <% @nodes.each do |node| %>
        <% @card_number += 1 %>
        <div class="col s12 m6 l4 card-container">
          <div class="card" id="card-<%= @card_number %>">
            <!-- Card Content -->

生成如下 HTML:

<div class="card" id="card-2">

编辑2

我的 Controller 中调用 create.js.erb 的操作是CommentController#Create 。它看起来像这样:

  def create
    @node = Node.find(params[:node_id])
    @comment = current_user.comments.new(comment_params)
    @comment.node = @node
    @card_id = params[:card_id]

    respond_to do |format|
      if @comment.save and @node.save
        format.html
        format.js
      else
        format.html # { render action: 'new' }
        format.js
      end
    end
  end

编辑3

这是生成表单的代码:

<div class="card-input">
  <%= simple_form_for([node, Comment.new], html: { id: "new_comment_card-#{@card_number}"}, remote: true) do |f| %>
   <%= f.error_notification %>
   <%= f.input_field :message, as: :text, id: "card-input-field-#{@card_number}", class: "input-field", placeholder: "Share your thoughts", cols: "30", rows: "10" %>
    <%= f.button :submit, name: "card_id", value: "card-#{@card_number}", class: "input-submit" %>
  <% end %>
</div>

编辑4

提交表单后,服务器日志如下所示:

Started POST "/nodes/86/comments" for 127.0.0.1 at 2015-07-13 23:22:26 -0500
Processing by CommentsController#create as JS
  Parameters: {"utf8"=>"✓", "comment"=>{"message"=>"Form Video Comment 5."}, "card_id"=>"card-2", "node_id"=>"86"}
  User Load (5.7ms)  SELECT  "users".* FROM "users"  WHERE "users"."id" = 57  ORDER BY "users"."id" ASC LIMIT 1
  FamilyTree Load (7.8ms)  SELECT  "family_trees".* FROM "family_trees"  WHERE "family_trees"."user_id" = $1 LIMIT 1  [["user_id", 57]]
  Role Load (4.5ms)  SELECT "roles".* FROM "roles" INNER JOIN "users_roles" ON "roles"."id" = "users_roles"."role_id" WHERE "users_roles"."user_id" = $1 AND (((roles.name = 'admin') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL)))  [["user_id", 57]]
  Node Load (2.3ms)  SELECT  "nodes".* FROM "nodes"  WHERE "nodes"."id" = $1 LIMIT 1  [["id", 86]]
   (1.9ms)  BEGIN
  SQL (5.1ms)  INSERT INTO "comments" ("created_at", "message", "node_id", "updated_at", "user_id") VALUES ($1, $2, $3, $4, $5) RETURNING "id"  [["created_at", "2015-07-14 04:22:26.760577"], ["message", "Form Video Comment 5."], ["node_id", 86], ["updated_at", "2015-07-14 04:22:26.760577"], ["user_id", 57]]
  SQL (6.2ms)  UPDATE "nodes" SET "comments_count" = COALESCE("comments_count", 0) + 1 WHERE "nodes"."id" = 86
   (3.3ms)  COMMIT
   (7.7ms)  BEGIN
   (1.8ms)  COMMIT
  Rendered nodes/_comment.html.erb (1.2ms)
  Rendered comments/create.js.erb (11.6ms)
Completed 200 OK in 351ms (Views: 29.3ms | ActiveRecord: 46.2ms)

注意 params[:card_id] = 'card-2'

最佳答案

如果在 Rails View 中,则为

<div class="card" id="card-<%= @card_number %>">

那么对于 Javascript,您应该使用:

$("#card-<%= @card_id %>")

关于javascript - 如何选择由 ruby​​ 实例变量表示的动态 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31397233/

相关文章:

ruby-on-rails - 使用 Rails 和 Twilio 发送短信

javascript - 使用 ng-click 上传没有表单的图像

javascript - 如何使用外部 ".js"文件

javascript - 如何在 JavaScript 的异步函数中使用 do/while 语句?

javascript - jquery 选择器

JavaScript JSON 对象对象错误

javascript - 访问 JSON 对象内的数组元素

javascript - 如何在刷新页面时不显示返回顶部按钮?

ruby-on-rails - rails : database queries too slow for scope that depends on join with another table

php - 是否存在前端编码人员可以存储数据的神奇后端服务?