簡體   English   中英

JavaScript在Rails中未作為響應執行

[英]JavaScript not executing as response in Rails

我有一個在我的視圖中創建消息的表單,並且我希望同一頁面上的消息列表在創建時進行更新。 所以我正在使用Ajax。 從create動作返回的似乎是html,而不僅僅是js腳本,並且該腳本未執行。 (我嘗試放入警報功能進行測試)。

而是將腳本附加到響應的末尾。 我究竟做錯了什么?

我的控制器動作:

def create
    @order = Order.find(params[:order_id])
    @customer = @order.customer
    @message = current_user.messages.create(
      body: message_params[:body],
      order_id: @order.id
      )
    respond_to do |format|
      if @message.save
        format.html { redirect_to @message, notice: 'Message was successfully created.' }
        format.js
      end
    end

create.js.haml:

%script(type="text/javascript")
  $("#messages").append("<p>Hello</p>");

我的表格

= simple_form_for :message, remote: true, url: order_messages_path(@order), method: :post do |f|
  = f.error_notification
  = f.hidden_field :customer_id, value: @order.customer.id
  .form-inputs
    = f.text_field :body
  .form-actions
    = f.button :submit

並返回完整的html:

  (...)
  </head>
  <body>
    <nav>
      (...)
    </nav>
    <script type='text/javascript'>
      $("#messages").append("<p>Hello</p>");
      console.log("Hello");
    </script>
    </div>
  </body>
</html>

服務器響應:

Started POST "/orders/1/messages" for 127.0.0.1 at 2015-07-15 21:48:31 +0200
Processing by MessagesController#create as JS
  Parameters: {"utf8"=>"✓", "message"=>{"customer_id"=>"1", "body"=>"There is a light."}, "commit"=>"Save Message", "order_id"=>"1"}
  User Load (0.4ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1  ORDER BY "users"."id" ASC LIMIT 1  [["id", 1]]
  Order Load (0.3ms)  SELECT  "orders".* FROM "orders" WHERE "orders"."id" = $1 LIMIT 1  [["id", 1]]
  Customer Load (0.3ms)  SELECT  "customers".* FROM "customers" WHERE "customers"."id" = $1 LIMIT 1  [["id", 1]]
   (0.2ms)  BEGIN
  SQL (0.8ms)  INSERT INTO "messages" ("body", "order_id", "creator_type", "user_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id"  [["body", "There is a light."], ["order_id", 1], ["creator_type", "user"], ["user_id", 1], ["created_at", "2015-07-15 19:48:31.996217"], ["updated_at", "2015-07-15 19:48:31.996217"]]
   (1.2ms)  COMMIT
  Rendered messages/create.js.haml within layouts/application (3.6ms)
  Rendered layouts/_navigation.haml (1.4ms)
Completed 200 OK in 463ms (Views: 453.0ms | ActiveRecord: 3.2ms)

首先,我認為%script(type =“ text / javascript”)是不必要的。 嘗試將其刪除並放入

format.js { render "create.js.haml" }

#messages元素存在,對嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM