我也是Web开发和rails的新手。我在php中创建了一个内部使用的Web应用程序,现在正将它转换为rails。试图找出渲染的内容很困难。例如,我找到这样的定义:
render(options = nil, extra_options = {}, &block) protected
Renders the content that will be returned to the browser as the response body.
似乎没有人告诉作者你在其定义中没有使用任何一个词。
我试图理解渲染,因为根据How to pass json response back to client,这是一种比我尝试过的方法更好的完成任务的方法。但是如果没有其他的方法,我不知道如何实现它。
可能是由于我缺乏网络经验,所以如果任何人有任何可能有用的定义链接,请发布。
我收到此错误:
GetData中的错误:JSON.parse:JSON数据第2行第3列的预期属性名称或“}”
当我在警告框中打印字符串时,它显示为一个长字符串,因此我不知道“第2行”在哪里。如果我将限制设置为1,我会得到相同的错误,这使得“第2行”很难找到。
以下是我回来的数据示例:
[{"DocumentNbr":"SS9230","DocumentRevision":""},{"DocumentNbr":"SS8640","DocumentRevision":"17"},{"DocumentNbr":"SS8618","DocumentRevision":"4"},{"DocumentNbr":"SS8630","DocumentRevision":"20"},
我不知道“是否应该拼写为& quot或至少是如何在警告框中显示。我不知道这是正常的还是导致JSON的错误。解析失败。除了警告之外还有其他方法来检查数据吗?
我有一个javascript函数可以在视图中调用'GetData':
var wholeNumberData;
wholeNumberData = GetData('wholeNumber', wholeNumber);
看起来像这样(精简版):
function GetData(getType, param) {
var data;
var params;
params = 'wholeNumber=' + param;
data = SendRequest('wholenumber/index', params);
return data;
}
function SendRequest(source, params) {
var http = new XMLHttpRequest();
http.open("GET", source + '?' + params, false);
http.setRequestHeader("Content-type","application/json");
http.onload = function() {
//alert('in function');
}
http.send(params);
alert(http.responseText);//Works
return JSON.parse(http.responseText);//FAILS
}
路径全数/索引指向一个index.html.erb,其中包含:
<% @list = Wholenumber.where("DocumentNbr LIKE ?", params[:wholeNumber] + "%").limit(10) %>
<%= @list.to_json(:only => [:DocumentNbr, :DocumentRevision]) %>
答案 0 :(得分:1)
这是一种不寻常的方式,但你可以在html_safe
方法中添加to_json
,它应该如何运作。
<%= @list.to_json(:only => [:DocumentNbr, :DocumentRevision]).html_safe %>
如果您希望控件呈现JSON,而不是尝试从html解析JSON,您可以让控制器操作执行以下操作:
def action
@list = Wholenumber.where("DocumentNbr LIKE ?", params[:wholeNumber] + "%").limit(10)
render json: @list.to_json(:only => [:DocumentNbr, :DocumentRevision])
end
The Rails Guides有一个更彻底的Rails渲染演练