我正在尝试使用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
这是我的控制台:
无法弄清问题是什么。请帮忙!
答案 0 :(得分:0)
JSON
。contacts.json.erb
的文件。请检查: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,而不是周围的应用程序布局。