查看不渲染

时间:2014-03-07 04:48:10

标签: jquery ruby-on-rails webrick

我正在尝试使用jquery从当前视图渲染视图。我正在为我的项目使用flexigrid,我想为信息按钮编码。

这是我的看法。使用jquery我调用以下内容,

var name = $('.trSelected .sorted div').html();
$.post("/contacts/display_info/", {file_as : name});

我的控制器如下。也试过调试。

def display_info
        @contact = Contacts.find_by_file_as(params[:file_as])
        puts "---------------"
        puts @contact.id
        puts "---------------"
        render(:action => 'display_info' , :id => @contact.id)
    end

这是我的控制台:

enter image description here

无法弄清问题是什么。请帮忙!

3 个答案:

答案 0 :(得分:0)

  1. 如果您正在执行ajax请求,那么它应该是JSON
  2. 对于Json,请检查联系人文件夹中名为contacts.json.erb的文件。
  3. 您可以尝试使用远程真实,更干净,更好的选项,而不是ajax / json请求。
  4. 请检查:http://railscasts.com/episodes/205-unobtrusive-javascript

    尝试放入你的控制器

    respond_to do |format|
        format.html
        format.json { render :json=> {:success => true, :id => @contact.id } }
    end
    

    像这样。

答案 1 :(得分:0)

layout中,请添加:

<%= csrf_meta_tag %>

当您posting时确保发送:

 "authenticity_token": "<%= form_authenticity_token %>"

更具体地说:

$(document).ajaxSend(function(e, xhr, options) {
  var token = $("meta[name='csrf-token']").attr("content");
  xhr.setRequestHeader("X-CSRF-Token", token);
});

感谢。

答案 2 :(得分:0)

问题是你正在发出ajax请求,但是你没有做任何事情。您需要一个回调来捕获请求的响应,并以某种方式处理它。

类似的东西:

$.post("/contacts/display_info/", {file_as : name}, function(data) {
  // `data` will be the HTML returned by the server

  // If for example you want to render this HTML on your page, you may want something like: 
  $('#my_fancy_div').html(data);
});

您还希望将控制器操作更改为render layout: false,假设您只想在视图中呈现HTML,而不是周围的应用程序布局。