小编Fra*_*ter的帖子

在Rails 3中检测用户操作系统的最简单方法是什么?

简单的Rails应用程序,主要是脚手架.我想检测用户是否使用Android或iPhone访问我的应用程序.最简单的方法是什么?

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

12
推荐指数
2
解决办法
7169
查看次数

在kernel.org关闭的同时,在线查找Git参考内容的最佳位置是什么?

我喜欢在浏览器中而不是在终端控制台中阅读精心格式化的手册页.

直到最近,任何时候我都要查看Git命令的详细信息,我只需谷歌命令(如"git reset")然后点击kernel.org链接到格式良好的手册页(链接www.kernel.org) /pub/software/scm/git/docs/v1.7.1/git-reset.html)

Kernel.org已经关闭了很长时间,目前尚不清楚它是否/什么时候回来了.

幸运的是,Google缓存仍然存在.但是还有另一个找到Git命令引用的好地方吗?

git

7
推荐指数
2
解决办法
343
查看次数

在Ruby中打开回形针附件的标准/正确方法是什么?

Paperclip提供了一种.url方法,用于获取要包含在视图中的附件的URL.

我需要在Ruby中实际打开附件作为文件.

大约六个月前,Paperclip的最新版本允许我们在附件对象上调用to_file.虽然没有记录,但它始终如一.但在某些时候它停止了工作.

我希望能够在验证器中打开文件本身(在这种情况下它尚未保存到其最终位置),或者在保存ActiveModel对象之后从完全其他方法打开文件(在这种情况下文件已被保存)移动到最终位置,可能在Amazon S3上.

似乎选项是:

file = File.new(object.attachment.path)
Run Code Online (Sandbox Code Playgroud)

...仅适用于本地文件,而不适用于S3.要么:

file = object.attachment.queued_for_write[:original]
Run Code Online (Sandbox Code Playgroud)

...只在第一次保存之前有效(我认为)?

似乎应该有一个简单的方法来打开文件(在类似Amazon S3的情况下,可能涉及将其复制到临时位置)并且我猜测答案与io_adapters有关,但我已经阅读了代码(以及相当多的StackOverflow问题),我仍然感到难过.

有没有一种标准方法可以将回形针附件打开为适用于所有情况的文件?

ruby-on-rails paperclip

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

Rails 3正在从AIR更改POST上的会话ID

我在Rails 3中有一个REST API,有时可以从AIR应用程序访问,有时也可以从浏览器访问.

认为这是一个Rails 3问题,但它可能是一个Flex/AIR问题.

Rails应用程序使用omniauth进行身份验证,使用cancan进行授权,使用active_record_store.我使用会话模型来存储用户的身份.

(有一个原因我没有使用cookie会话,与AIR for Android,OAuth和StageWebView有关.)

我正在使用Charles来监控HTTP流量.

大多数请求工作正常.浏览器(或AIR客户端)使用Cookie http标头将会话ID发送到服务器,如下所示:

_session_id=950dee7eca6732aa62b5f91876f66d15
Run Code Online (Sandbox Code Playgroud)

并且Rails找到会话,确定用户是谁,并做其事.

但在某些情况下,Rails会在发送响应之前生成新会话.它向会话表添加会话,并使用新的会话ID 向客户端返回Set-Cookie标头.像这样:

_session_id=e1489a6b610c0a1d13cec1454228ae47; path=/; HttpOnly
Run Code Online (Sandbox Code Playgroud)

发生这种情况的情况是:

  • 请求来自AIR客户端
  • 请求是POST

这显然是一个问题,因为在后续请求中,Rails无法找到用户信息.它创建了一个没有该信息的新会话.

所以我正在查看POST请求的HTTP头.这是Charles的复制/粘贴; 我在标题名称后插入冒号以使其可读.

Host: localhost.seti.hg94.com:3000
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/531.9 (KHTML, like Gecko) AdobeAIR/2.6
Referer: app:/AndroidApplication.swf
X-Flash-Version: 10,2,152,22
Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Cookie: _session_id=950dee7eca6732aa62b5f91876f66d15
Content-Length: 84
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)

有没有对Rails在这种情况下会产生新会话的原因有任何见解?它似乎是我的控制器代码执行发生的,因为我在控制器中有正确的会话信息.

我正忙着尝试进一步隔离问题,控制AIR内的标题,等等.我已经在这个bug上工作了将近一个星期.因此,非常感谢社区的任何见解或建议.

air cookies ruby-on-rails http-headers ruby-on-rails-3

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

具有水平滚动的JQuery UI可排序正在将所有元素向下移动

我想允许用户使用滚动条从左到右对对象进行排序.

对象是包含HTML的框,包括一些文本,而不是像许多其他示例那样的图像.

问题是当用户拖动其中一个对象时,所有其他对象在拖动过程中向下移动.

这就是我所拥有的:

HTML:

<div id="parent" class="parent">
  <div id="list" class="list">
    <div class="item">A</div>
    <div class="item">B</div>
    <div class="item">C</div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.parent {
  height:64px;
  width:280px;
}
.list {
  background-color:#d0d0d0;
  white-space:nowrap;
  overflow-x:scroll;
  overflow-y:hidden;
  /*text-align:left;*/
}
.item {
  background-color:#404040;
  height:40px;
  width:100px;
  margin:4px;
  cursor:pointer;
  display:inline-block;
  /*float:left;*/
  /*float:none;*/
  /*clear:both;*/
}
.placeholder {
  height:40px;
  width:20px;
  display:inline-block;
  margin:4px;
}
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

$(function() {
  $('#list').disableSelection().sortable({
    scroll: true,
    placeholder: 'placeholder',
    //containment:'parent',
    axis: 'x'
  });
})
Run Code Online (Sandbox Code Playgroud)

我尝试了很多不同的设置,并留下了一些作为评论.

查看问题的最佳方法是:http://jsfiddle.net/francispotter/gtKtE/

css jquery jquery-ui

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

设想可记得没有记住

我正在Rails 3.2应用程序上实现Devise,并希望系统记住用户.

/app/models/user.rb:

class User < ActiveRecord::Base
  devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable
  attr_accessible :name, :email, :password, :password_confirmation, :remember_me
end
Run Code Online (Sandbox Code Playgroud)

/db/schema.rb:

create_table "users", :force => true do |t|
  t.string   "name"
  t.string   "email"
  t.string   "password"
  t.datetime "created_at",                             :null => false
  t.datetime "updated_at",                             :null => false
  t.string   "encrypted_password",     :default => "", :null => false
  t.string   "reset_password_token"
  t.datetime "reset_password_sent_at"
  t.datetime "remember_created_at"
  t.integer  "sign_in_count",          :default => 0
  t.datetime "current_sign_in_at"
  t.datetime "last_sign_in_at"
  t.string   "current_sign_in_ip"
  t.string   "last_sign_in_ip"
end
Run Code Online (Sandbox Code Playgroud)

我想以最标准/默认的方式做到这一点,并且考虑到文档的不足,我猜它对某些人来说"只是起作用"而根本不适合我.例如,我使用Devise生成器为User构建迁移,并且没有覆盖任何控制器.我收到一个复选框,但是当我检查它时,用户的信息不会被记住.

我错过了什么?我的架构中是否缺少生成器应该创建的东西?

devise ruby-on-rails-3

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

Rails 3迁移不适用于Heroku

我有一个非常简单的迁移,它是使用生成器创建的

class AddEmailToUsers < ActiveRecord::Migration
  def self.up
    add_column :users, :email, :string
  end

  def self.down
    remove_column :users, :email
  end
end
Run Code Online (Sandbox Code Playgroud)

它在当地运作良好

rake db:migrate
rails console
>> User.column_names
=> ["id", "created_at", "updated_at", "uid", "provider", "name", "role", "email"]
Run Code Online (Sandbox Code Playgroud)

我在Heroku上有两个版本的应用程序.在一个,它工作正常.另一方面,该列根本没有显示出来.

heroku rake db:migrate的输出看起来正确:

==  AddEmailToUsers: migrating ================================================
-- add_column(:users, :email, :string)
   -> 0.0031s
==  AddEmailToUsers: migrated (0.0032s) =======================================
Run Code Online (Sandbox Code Playgroud)

但该专栏不存在:

>> User.column_names
=> ["id", "created_at", "updated_at", "uid", "provider", "name", "role"]
Run Code Online (Sandbox Code Playgroud)

(顺便说一下,我所有的数据库更改都是通过生成器创建的迁移;我自己没有触及SQL,也没有编辑任何迁移文件.)

这是一个生产环境,因此不能选择丢弃表.

我可以尝试的任何建议吗?

ruby-on-rails heroku ruby-on-rails-3

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