渲染部分只是从ajax渲染字符串

时间:2014-05-13 11:13:05

标签: javascript jquery ruby-on-rails ajax

我正在尝试从ajax响应中呈现部分内容。

//app/assets/javascript/pages/contact.js
$("#new_message").on("ajax:success", function(event, data, status, xhr) { 
    $("#new_message").prepend("<%=j( render 'layouts/error_messages', object: f.object) %>")
});

这是从消息控制器发送的

class MessagesController < ApplicationController
  def contact
    @message = Message.new(params[:message])
    respond_to do |format|
      if @message.valid?
        ContactMailer.contact_me(@message)
        format.html { redirect_to contact_path, notice: 'Message was sent successfully.' }
        format.js { render nothing: true }                                                                                                                                                                                                                                                                                                                                                          
      else
        format.html { redirect_to contact_path }
        format.js { render nothing: true }
      end
    end
  end
end

我猜这个问题来自它不是部分的,我必须在我的format.js块中发送数据。

当调用ajax事件时,它会附加字符串而不是呈现它

编辑*将代码移动到contact.js.haml仍然使其返回为字符串

$("#new_message").prepend("j(render partial:'layouts/error_messages', object: f.object))")

1 个答案:

答案 0 :(得分:0)

将其更改为

$("#new_message").prepend("#{ j(render partial:'layouts/error_messages', object: f.object)) }")

您可能想要更改f.object