[英]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.