我在rails 3.1项目中使用jQuery。我使用了button_to:remote =>是的:
<%= button_to "View Examples", "#{requisition_assign_path(@req.id, category_row.id)}?show_examples=1", :remote => true, :method => 'get' %>
这可以很好地处理服务器,并在此处理:
def show
@assignment = Assignment.find params[:id]
@tag = @assignment.assignee
examples = []
@tag.example[@tag.tag].each do |e|
examples << {:id => e.id}
end
@examples_json = examples.to_json
respond_to do |format|
format.js {render "assign/show.js.erb"}
end
end
哪个叫show.js.erb就好了:
alert(jQuery.parseJSON("<%= @examples_json %>");
但是在浏览器中,文本到了,但我无法解析原始的哈希数组。我错过了什么?
----我可能缺少的只是使用jQuery的getJSON函数......
答案 0 :(得分:1)
您可以发布此操作的日志吗?我使用内置的“远程”帮助程序时遇到的一个问题是它们在JS中请求内容,而不是JSON。使用当前的控制器代码,您将无法从$ .getJSON获得任何响应(您的控制器设置为仅响应JS)。您可以尝试在控制器顶部添加respond_to块
respond_to :html, :json
并且您的操作可能看起来像
def show
@assignment = Assignment.find(params[:id])
@tag = assignment.assignee
@examples = []
@tag.example[@tag.tag].each do |e|
@examples << {:id => e.id}
end
respond_with(@examples)
end
如果你要求JSON内容,Rails 3默认的Responder会自动将@examples转换为JSON。您可以尝试使用通用的jQuery AJAX函数
jQuery.ajax({
url: $(this).attr('href'),
type: 'GET',
dataType: 'JSON',
success: function(data){
json = jQuery.parseJSON(data.responseText);
console.log(json);
}
});
祝你好运!