2014-05-13 152 views
1

我想渲染从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))") 
+0

尝试重命名网络le to'contact.js.erb'以确保ERB标签将被正确解释 – omnikron

回答

0

它更改为

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

你可能想改变f.object

+0

太棒了,所以我只需要弄清楚如何将对象拉入ajax – MikaAK

+0

很简单,在控制器动作中初始化的任何实例变量都将可以! – Santhosh

+0

但它必须声明为本地:{object:-variable-} not object;) – MikaAK