标签: ruby-on-rails-3

在Rails 3应用程序中添加特定于页面的JavaScript的最佳方法?

Rails 3有一些不引人注目的JavaScript,非常酷.

但我想知道最好的方法是为特定页面添加额外的JavaScript.

例如,我之前可能做过的事情:

<%= f.radio_button :rating, 'positive', :onclick => "$('some_div').show();" %>
Run Code Online (Sandbox Code Playgroud)

我们现在可以用类似的东西使它不引人注目

<%= f.radio_button :rating, 'positive' %>

# then in some other file
$('user_rating_positive').click(function() {
  $('some_div').show();
}
Run Code Online (Sandbox Code Playgroud)

所以我想我的问题是在哪里/如何包含JavaScript?我不想填写该application.js文件,因为此JavaScript仅适用于此视图.我应该以某种方式为每个页面包含一个自定义JavaScript文件,还是将其粘贴在标题所查找的实例变量中?

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

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

Rails 3.1和图像资产

我已将我的管理主题的所有图像放在名为admin的文件夹中的assets文件夹中.然后我像正常那样链接到它.

# Ruby    
image_tag "admin/file.jpg" .....
#CSS
.logo{ background:url('/assets/images/admin/logo.png');
Run Code Online (Sandbox Code Playgroud)

仅供参考.仅仅为了测试我还没有使用asset_path标签,因为我还没有编译我的资产.

好的,直到我决定更新图像为止.我更换了一些颜色,但在重新加载新样式的图像时没有显示.如果我直接在浏览器中查看图像,它仍然显示旧图像.更进一步,我摧毁了管理员图像文件夹.但它没有破坏所有图像仍在显示.是的,我已经清除了我的缓存并尝试了多个浏览器.

是否存在某种图像缓存?这只是使用pow来为页面提供服务的本地开发.

甚至破坏整个图像文件夹仍然可以提供图像.

我错过了什么吗?

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

156
推荐指数
5
解决办法
13万
查看次数

在Rails和PostgreSQL中完全忽略时区

我正在处理Rails和Postgres中的日期和时间并遇到这个问题:

数据库采用UTC格式.

用户在Rails应用程序中设置选择的时区,但仅在获取用户本地时间来比较时间时使用.

用户存储时间,例如2012年3月17日晚上7点.我不希望存储时区转换或时区.我只想保存日期和时间.这样,如果用户改变他们的时区,它仍将显示2012年3月17日,晚上7点.

我只使用用户指定的时区来获取用户本地时区当前时间之前或之后的记录.

我目前正在使用"没有时区的时间戳",但是当我检索记录时,rails(?)会将它们转换为应用程序中的时区,这是我不想要的.

Appointment.first.time
 => Fri, 02 Mar 2012 19:00:00 UTC +00:00 
Run Code Online (Sandbox Code Playgroud)

因为数据库中的记录似乎是以UTC形式出现的,我的黑客是用当前时间,用'Date.strptime(str,"%m /%d /%Y")删除时区,然后做我的查询:

.where("time >= ?", date_start)
Run Code Online (Sandbox Code Playgroud)

似乎必须有一种更简单的方法来忽略周围的时区.有任何想法吗?

postgresql timezone datetime ruby-on-rails ruby-on-rails-3

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

在Rails中创建唯一令牌的最佳方法?

这就是我正在使用的.令牌不一定要被猜测,它更像是一个短网址标识符,而不是其他任何东西,我想保持简短.我已经按照我在网上找到的一些例子,如果发生碰撞,我认为下面的代码会重新创建令牌,但我不确定.不过,我很想看到更好的建议,因为边缘感觉有点粗糙.

def self.create_token
    random_number = SecureRandom.hex(3)
    "1X#{random_number}"

    while Tracker.find_by_token("1X#{random_number}") != nil
      random_number = SecureRandom.hex(3)
      "1X#{random_number}"
    end
    "1X#{random_number}"
  end
Run Code Online (Sandbox Code Playgroud)

我的令牌的数据库列是一个唯一的索引,我也在validates_uniqueness_of :token模型上使用,但因为这些是根据用户在应用程序中的操作自动批量创建的(他们下订单并购买令牌,基本上),它是让应用程序抛出错误是不可行的.

我猜,我也可以减少碰撞的几率,在最后添加另一个字符串,根据时间或类似的东西生成的东西,但我不希望令牌太长.

random guid ruby-on-rails ruby-on-rails-3

154
推荐指数
9
解决办法
11万
查看次数

在现有Rails列中添加:default => true to boolean

我在这里看到了一些关于向现有列添加默认布尔值的问题(即这一个).所以我尝试了这个change_column建议,但我一定不能做得对.

我试过了:

$ change_column :profiles, :show_attribute, :boolean, :default => true
Run Code Online (Sandbox Code Playgroud)

哪个回报 -bash: change_column: command not found

然后我跑了:

$ rails g change_column :profiles, :show_attribute, :boolean, :default => true
Run Code Online (Sandbox Code Playgroud)

...和

$ rails change_column :profiles, :show_attribute, :boolean, :default => true
Run Code Online (Sandbox Code Playgroud)

然后跑了rake db:migrate,但价值:show_attribute仍然存在nil.在我上面提到的问题中,它在PostgreSQL中说你需要手动更新它.由于我正在使用PostgreSQL,因此我在create_profiles迁移中添加了以下内容:

t.boolean :show_attribute, :default => true
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这里我做错了什么?

migration ruby-on-rails-3

153
推荐指数
3
解决办法
12万
查看次数

Rails隐藏字段未定义方法'合并'错误

我想在铁轨上做这样的事情

以下是我目前在rails中的内容:

<%= form_for @order do |f| %>
  <%= f.hidden_field :service, "test" %>
  <%= f.submit %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

但后来我得到了这个错误:

undefined method `merge' for "test":String
Run Code Online (Sandbox Code Playgroud)

如何在rails中的hidden_​​field中传递值?

ruby forms ruby-on-rails hidden-field ruby-on-rails-3

151
推荐指数
3
解决办法
8万
查看次数

Rails 3检查属性是否已更改

在Rails 3中更新之前,需要检查属性块是否已更改.

street1,street2,city,state,zipcode

我知道我可以使用类似的东西

if @user.street1 != params[:user][:street1]
  then do something....
end
Run Code Online (Sandbox Code Playgroud)

但这段代码真的很长.有更干净的方式吗?

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

149
推荐指数
4
解决办法
11万
查看次数

如何从github获取gem的特定"提交"?

我正在使用rails_admin,因为它处于(非常)活跃的开发中,所以偶尔会出现错误.

据我所知,对于github中的gem,没有gem的版本,所以我不能:version在Gemfile中使用key进行gem声明.

有没有办法可以将一个特定的提交(我知道对我来说工作正常)"绑定"到Gemfile?

我目前在我的Gemfile中:

gem 'rails_admin', 
  :git => 'git://github.com/sferik/rails_admin.git'
Run Code Online (Sandbox Code Playgroud)

我希望能够做这样的事情(例如"commit_id"):

gem 'rails_admin', 
  :git => 'git://github.com/sferik/rails_admin.git',
  :commit_id => "4e7d53e3c5c4c3c5c43c3"
Run Code Online (Sandbox Code Playgroud)

这可能与github有关吗?

gem ruby-on-rails-3

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

在创建新的Rails应用程序时,如何告诉Rails使用RSpec而不是test-unit?

我已经test-unit安装和rspec安装(沿-core,-expectations,-mocks-rails版本2.6.x的).当我运行该命令时rails new foo,它用于test-unit生成测试存根文件而不是rspec.

有没有一个选项,我可以告诉rails使用rspec来生成测试?

rspec testunit rspec2 ruby-on-rails-3

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

找不到PostgreSQL客户端库(libpq)

我正在尝试在Mac OS X 10.6上安装PostgreSQL for Rails.首先我尝试了MacPorts安装,但是进展不顺利,所以我做了一键式DMG安装.这似乎有效.

我怀疑我需要安装PostgreSQL开发包,但我不知道如何在OS X上执行此操作.

这是我尝试做的事情sudo gem install pg:

$ sudo gem install pg
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
    ERROR: Failed to build gem native extension.

        /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
checking for pg_config... yes
Using config values from /Library/PostgreSQL/8.3/bin/pg_config
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for PQconnectdb() in -lpq... no
checking for PQconnectdb() in -llibpq... no
checking for PQconnectdb() in -lms/libpq... no
Can't find the PostgreSQL client …
Run Code Online (Sandbox Code Playgroud)

postgresql rubygems ruby-on-rails ruby-on-rails-3

146
推荐指数
12
解决办法
7万
查看次数