Ruby on rails 如何将数据从GoogleDriveAPI传递到Rails应用程序模型?
有一个简单的Rails应用程序表单视图。用户通过“文件选择器功能”(例如Google Picker)从其API帐户(例如Google Drive帐户)中选择一个文件,API通过javascript回调函数发回数据(url、缩略图等)(参见下面的JS代码) 如何通过javascript回调函数将来自API的此类数据传递到Rails模型中 代码在Rails表单文件中是什么样子的?控制器中发生了什么 对不起,我对Rails还很陌生,这可能是一个新手问题。任何类型的建议,链接,阅读更多关于它的信息等都会非常有用。我找了好一阵子,但没找到s.th。有用。 非常感谢你的帮助 html/javascript:Ruby on rails 如何将数据从GoogleDriveAPI传递到Rails应用程序模型?,ruby-on-rails,ruby-on-rails-3,callback,google-drive-api,Ruby On Rails,Ruby On Rails 3,Callback,Google Drive Api,有一个简单的Rails应用程序表单视图。用户通过“文件选择器功能”(例如Google Picker)从其API帐户(例如Google Drive帐户)中选择一个文件,API通过javascript回调函数发回数据(url、缩略图等)(参见下面的JS代码) 如何通过javascript回调函数将来自API的此类数据传递到Rails模型中 代码在Rails表单文件中是什么样子的?控制器中发生了什么 对不起,我对Rails还很陌生,这可能是一个新手问题。任何类型的建议,链接,阅读更多关于它的信息等都会
<div class="btn btn-primary" id="gdrive" onclick="javascript:openPicker()">
Choose Google Drive File
</div>
<script type="text/javascript">
// The API developer key obtained from the Google Cloud Console.
var developerKey = '<DEV KEY>';
// Use the API Loader script to load google.picker.
function openPicker() {
gapi.load('picker', {'callback': createPicker});
}
// Create and render a Picker object for searching images.
function createPicker() {
var picker = new google.picker.PickerBuilder().
addView(google.picker.ViewId.DOCS).
setDeveloperKey(developerKey).
setCallback(pickerCallback).
build();
picker.setVisible(true);
}
// A simple callback implementation.
function pickerCallback(data) {
var url = 'nothing';
if (data[google.picker.Response.ACTION] == google.picker.Action.PICKED) {
var doc = data[google.picker.Response.DOCUMENTS][0];
url = doc[google.picker.Document.URL];
}
var message = 'You picked: ' + url;
document.getElementById('gdrive').innerHTML = message;
}
</script>
<!-- The Google API Loader script. -->
<script type="text/javascript" src="https://apis.google.com/js/api.js?onload=loadPicker"></script>
再次感谢您的阅读。任何想法都非常感谢 您想保存什么当然可以在url中传递值,但也可以使用某种隐藏字段,然后以表单形式发送。这是我找到的解决方案: 在_表单视图中设置隐藏的_字段:
<%= f.hidden_field :gdrive,
:id => "gdrive"%>
上面的最后一行将API数据(此处:url=doc[google.picker.Document.url])发送到rails模型。为了简单起见,假设我只保存通过API提供的url--url=doc[google.picker.Document.url];--并将其保存在Rails模型“gdrive”中。
<%= f.hidden_field :gdrive,
:id => "gdrive"%>
// A simple callback implementation.
function pickerCallback(data) {
var url = 'nothing';
if (data[google.picker.Response.ACTION] == google.picker.Action.PICKED) {
var doc = data[google.picker.Response.DOCUMENTS][0];
url = doc[google.picker.Document.URL];
}
document.getElementById('gdrive').setAttribute('value', url);
}