小编Mor*_*ger的帖子

Rails 3/Form没有Model:如何创建一个与模型无关的表单?

我有一个模型,我有一个视图,显示一个基于该模型创建新对象的表单.我们称之为那种形式Form1.

用户提交后Form1,将创建该对象.然后,我想在下一页上显示第二个表单Form2,该表单要求用户在将对象保存到数据库之前检查各种选项.

我的问题可能非常基本.我不知道如何创建Form2,因为它不直接与模型绑定.因为我是Rails新手,所以我只创建了以下表格:

form_for(@object) { |f| ... }
Run Code Online (Sandbox Code Playgroud)

@object 是从模型实例化的对象

问题:我不相信这种代码在我的目的下会起作用.我如何创造Form2,因为它不能基于@object@object模型?

我的应用程序中的一些细节:

Form1在重定向到OAuth服务器之前,站点接受values().

当用户在OAuth服务器上验证其凭据时,她将被重定向回我的站点.一个XML-RPC请求,然后获取关于用户的账户上的信息OAuth服务器.

XML响应可能表明用户只有一个帐户上的OAuth服务器.如果是这样,则从中检索一些值XML并将其添加到对象中 - 然后(最终)将其保存在数据库中 - 并将用户重定向到成功页面.

但是,如果XML响应表明用户在OAuth服务器上有多个帐户,我想显示一个表单(Form2),允许用户选择OAuth服务器上与我的站点关联的帐户.因此,Form2确实要求用户创建多少对象,而不是关于对象的特定属性.

activerecord ruby-on-rails ruby-on-rails-3

68
推荐指数
3
解决办法
4万
查看次数

Cordova:是否有可能为Android和ios平台提供不同的应用ID?

假设我有一个ID为com.StackOverflowExample.MyQuestion的Cordova应用程序,我使用CLI(cordova create)创建了Cordova 3 .我为我的应用添加了iOS和Android平台,并已将应用程序提交给Apple和Google Play.但是,现在,在将我的应用程序提交到Play之后,我似乎错误地将密码存放在我用来签署APK文件的密钥库中.我已经尝试了一切,我无法恢复它.

由于Google Play不允许我使用与之前由不同密钥库签名的APK相同的应用ID来签署提交给Play的后续APK,因此我知道我需要创建一个新的应用ID并在Android中重新开始.我意识到这将需要我的用户下载一个新的应用程序,但我现在别无选择.

我想避免的是将此问题溢出到Apple,我已经创建了所有证书,配置文件,密钥,签名请求等,并上传了一个IPA,其捆绑标识符与应用ID相同我提交给Google Play的第一张APK.

默认情况下,在使用CLI时,Cordova会使用您在运行时提供的单个应用程序ID添加您指定的任何平台cordova create.

我想知道的是:是否有可能在运行时cordova platform add自定义应用ID 下添加新平台,从而使不同的平台在同一个Cordova应用中具有不同的应用ID?

android ios google-play cordova cordova-3

20
推荐指数
2
解决办法
7493
查看次数

Rails 3 /设置自定义环境变量

我正在尝试创建一个rails应用程序,它在环境是开发环境时为变量分配一个值,在环境是生产环境时为该变量分配另一个值.我想在我的代码中指定两个值(硬连线),并让rails知道根据运行的环境分配给变量的值.我该怎么做呢?

如果它很重要,我稍后访问该变量并在模型的类方法中返回其值.

ruby-on-rails-3

16
推荐指数
2
解决办法
2万
查看次数

使用OAuth-Ruby和Tumblr API获取访问令牌(Rails 3)

我正在使用OAuth-Ruby对Tumblr应用程序进行OAuth身份验证.我能够编写通过OAuth的各个步骤进行的代码,但我无法获得访问令牌或实际发出请求.我可以获取请求密钥,将用户重定向到Tumblr以进行身份​​验证和授予访问权限,并接收经过身份验证的请求密钥.但我不能比这更远.

我已经注册了我的Tumblr应用程序; 让我们假设这个问题,它为我提供了以下键:

  • OAuth使用者密钥:@oauth_consumer_key
  • 密钥:@secret_key

(我有实际的价值观,但由于显而易见的原因,我将它们隐藏在这里.)

我在用户提交表单时运行的控制器中运行以下代码,该表单将信息存储在@tumblog变量中:

#0. provided when registering application
@key = @oauth_consumer_key
@secret = @secret_key
@site = 'http://www.tumblr.com'
@consumer = OAuth::Consumer.new(@key, @secret,
                               { :site => @site,
                                 :request_token_path => '/oauth/request_token',
                                 :authorize_path => '/oauth/authorize',
                                 :access_token_path => '/oauth/access_token',
                                 :http_method => :post } )
if @consumer
  #1. get a request token
  @request_token = @consumer.get_request_token;
  session[:request_token] = @request_token
  session[:tumblog] = @tumblog

  #2. have the user authorize
  redirect_to @request_token.authorize_url
else
  flash[:error] = "Failed to acquire request token from Tumblr."
  render 'new'
end
Run Code Online (Sandbox Code Playgroud)

此代码将我带到Tumblr的正确页面,用户授予或拒绝我的应用程序访问用户帐户的权限.假设用户授予访问权限,Tumblr会重定向回我的应用程序,以及我在使用Tumblr注册应用程序时提供的回调.到那时,一切都很美妙. …

ruby-on-rails oauth tumblr oauth-ruby ruby-on-rails-3

10
推荐指数
1
解决办法
5136
查看次数

覆盖has_many上的ActiveRecord <<运算符:通过关系,接受连接模型的数据

我有三个类:人员,职位和目录.

  • 一个人has_many:目录,:通过=>:位置.
  • 目录has_many:people,:through =>:position.
  • Person和Directory has_many:position.
  • 除了具有id,person_id和directory_id之外,Position模型还具有一个或多个附加字段(例如,标题).

我希望能够做的是每次我将一个人添加到Directory.people集合时,将数据添加到连接模型,例如标题字段.通常的<<运营商不会削减它.Id est:

directory = Directory.last     # Let's assume that retrieves a Directory object
person = Person.last           # Let's assume that retrieves a Person object
directory.people << person
Run Code Online (Sandbox Code Playgroud)

这会将人员添加到Directory对象的people集合中,但不允许我有机会将数据分配给连接模型.因此,在对该网站进行了大量研究后,我发现了另一种方法将Person添加到people集合中,并将数据添加到链接Person和Directory的Position,id:

directory = Directory.last     # Let's assume that retrieves a Directory object
person = Person.last           # Let's assume that retrieves a Person object
position = person.positions.build(:directory_id => directory.id, :title => "Administrative Assistant") 
position.save
Run Code Online (Sandbox Code Playgroud)

这很麻烦.同样繁琐的方式是:

directory = Directory.last     # Let's assume that retrieves a Directory object
person …
Run Code Online (Sandbox Code Playgroud)

ruby activerecord ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

7
推荐指数
1
解决办法
2263
查看次数

MongoDB:如何在同一数据库中搜索多个集合并返回混合结果集?

我有一个单页应用程序,它使用我在 Node.js 上运行的 JavasScript 编写的 API,并使用 MongoDB 进行数据存储。该 API 公开了几种不同的内容类型,每种内容类型都存储在我的 MongoDB 数据库中的单独集合中。我的单页应用程序有一个搜索栏,其中包含一个用于选择内容类型的下拉列表(每个内容类型对应于我的 MongoDB 数据库中的一个不同集合)和一个用于指定将应用的搜索查询的输入字段。

我想要做的是:在我的下拉列表中添加一个名为“全部”的选项,当选择此选项时,我的 API 将返回五个最近创建的文档,无论包含这些文档的集合如何。

因此,举个例子,我可能有以下集合:

  • 汽车
  • 飞机
  • 自行车

我想在我的 API 中编写 JavaScript,返回其中最近的五个。因此,如果用户搜索“G”,我生成的 JSON 响应可能包含每个集合中的多个文档,如下所示:

 [
   {
     "_id": "123",
     "name": "Golf,
     "collection: "Automobile",
     "createdAt": "2014-06-20T01:45:00.0000Z"
   },
   {
     "_id": "234",
     "name": Gulfstream",
     "collection": "Airplane",
     "createdAt": "2014-06-19T01:45:00.0000Z"
   },
   {
     "_id": "345",
     "name": "Glastron",
     "collection": "Boat",
     "createdAt": "2014-06-18T01:45:00.0000Z"
   },
   {
     "_id": "456",
     "name": "Gary Fisher",
     "collection" "Bicycle",
     "createdAt": "2014-06-17T01:45:00.0000Z"
   }
   {
     "_id": "567",
     "name": "Grand Prix",
     "collection": "Automobile",
     "createdAt": …
Run Code Online (Sandbox Code Playgroud)

javascript mongodb node.js sails.js waterline

4
推荐指数
1
解决办法
1870
查看次数

从Rakefile/Ruby on Rails 3中的模型访问类方法

我有一个模型,我们称之为Foobar.我希望能够运行一个cron作业来更新作为Foobar实例的所有对象的属性.所以,在伪代码中,它可能是这样的:

Foobar.all.each do |foobar|
  foobar.update_attributes({:my_attribute => 'updated'});
end
Run Code Online (Sandbox Code Playgroud)

现在,假设我将其包装在名为Foobar.run_update()的类方法中.

调用Foobar.run_update()可以从控制器,甚至从视图中正常工作.但是,我想要做的是从Rakefile运行run_update(),以便我可以将它绑定到cron运行.但是,当从Crontab调用Rake时,Foobar类不可用.

我怎么解决这个问题?当从Cron调用Rake时,如何从Rake访问Foobars的类方法?

非常感谢您的帮助.

ruby rake ruby-on-rails rakefile ruby-on-rails-3

1
推荐指数
1
解决办法
1362
查看次数