Tag: ruby on rails

如何在Rails 3中指定使用迁移添加的字段顺序?

如何指定我想在哪个字段中添加新列? (我不希望在时间戳之后在底部添加字段) add_column :users, :is_active, :boolean

对rails中的attr_accessor和attr_accessible感到困惑

这是一个简单的注册应用程序 schema.rb create_table “users”, :force => true do |t| t.string “email” t.string “password_hash” t.string “password_salt” t.datetime “created_at”, :null => false t.datetime “updated_at”, :null => false User.rb attr_accessible :email, :password, :password_confirmation attr_accessor :password before_save :encrypt_password validates_confirmation_of :password validates_presence_of :password, :on => :create validates_presence_of :email validates_uniqueness_of :email . . . 为什么在attr_accessible和attr_accessor中都使用密码? 当我删除attr_accessor:password时,在rails控制台中,我在执行时遇到错误: user = User.new user.password # […]

在Ruby 1.8.7或1.9.2中编码

我一直在尝试使用不在1.9.2中构建的gem’字符编码’,但是在1.8.7中它确实如此,但即使我需要’encoding / character / utf-8’,我仍然无法做到最简单的编码。 require ‘encoding/character/utf-8’ str = u”hëllö” str.length #=> 5 str.reverse.length #=> 5 str[/ël/] #=> “ël” 我明白了 ruby-1.8.7-p302 > # encoding: utf-8 ruby-1.8.7-p302 > require ‘encoding/character/utf-8’ => nil ruby-1.8.7-p302 > str = u”hll” => u”hll” ruby-1.8.7-p302 > str.length => 3 ruby-1.8.7-p302 > #=> 5 ruby-1.8.7-p302 > str.reverse.length => 3 ruby-1.8.7-p302 > #=> […]

Rails明智地写一个csv文件

我喜欢使用内置的csv rails库将我的rails应用程序中的数据集导出为csv文件。 通常一个csv文件是按行编写的,就像我下面的例子中的来自我的datasets_controller.rb: require ‘csv’ dataset = Dataset.find(6) dataset_headers = dataset.datacolumns.collect { |dc| dc.columnheader } csv_file = CSV.generate do |csv| csv << dataset_headers end 而现在我的问题是,我是否也可以这样编写我的csv文件列? require ‘csv’ dataset_columns = Datacolumn.all(:conditions => [“dataset_id = ?”, 6], :order => “columnnr ASC”).uniq csv_file = CSV.generate do |csv| csv << "here put one after another all my data columns" […]

类别未定义 – rails

所以我有一个项目资源,其中嵌入了类别,整个项目结构设置如下: StartPoint::Application.routes.draw do get “log_out” => “sessions#destroy”, :as => ‘log_out’ get “log_in” => “sessions#new”, :as => ‘log_in’ get “sign_up” => “users#new”, :as => ‘sign_up’ root :to => ‘Projects#index’ resources :users resources :sessions resources :discussion_comments resources :comments resources :projects do resources :categories resources :duscussions resources :tasks end end 现在,在我的任务索引页面上说我试图渲染类别表单 project.id %> 当我渲染这个 – 我将项目对象传递给这个forms: @project%> 这不会在类别索引页面中呈现,而是在任务索引页面中呈现。 […]

从视图中删除rails trueity token

我预先在@bar的控制器中填充表单字段,当表单在视图中呈现时,它还会在视图中显示authenticity_token 。 def new @content = params[:foo][:id] @foo = Foo.find(@content) @bar = Bar.new(title: @foo.title, body: @foo.body, foo_id: @foo.id) end Screnshot 观点代码: Title: Body: 如何删除视图上呈现的authenticity_token?

如何从其他对象中包含表单元素?

我正在使用一个非常简单的论坛软件来帮助我在铁轨上弄湿ruby。 我想要做的是在用户创建新主题时为post内容添加文本区域,但每次我尝试在主题表单中添加它时,都会收到以下错误: NoMethodError in Topics#new Showing /Users/Ken/dev/forums/app/views/topics/_form.html.erb where line #11 raised: undefined method `merge’ for :content:Symbol 这是我的新主题表单: params[:forum] %> 这是我的主题模型: class Topic :destroy end 这是我的Post模型: class Post < ActiveRecord::Base attr_accessible :content belongs_to :topic end 如何在主题表单中使文本区域正常工作? 我是否需要将其添加到主题模型才能访问它,如果是,我该怎么做?

具有多个角色的人的设计模式

我想创建一个基本模型Person ,其中包含一些与人物相关的属性,如姓名,地址,电话等。 一个Person可以是以下一种或多种 : LoginUser包含登录,密码,last_login,…的字段 CardHolder ,包含card_id,last_entrance,…的字段 只有一个标志的Supplier ,无论该人是否是供应商 无论该人是否是Recipient ,只Recipient一个标志的收件人 Ruby on Rails中是否存在常识或最佳实践设计模式来表示inheritance? 它应该如何在模型和表结构中表示,以便可以检查Person是否是LoginUser并访问相应的字段。 在另一个项目中,我已经与STI合作,但在这种情况下,这不是正确的模式。

ActiveRecord :: Base的未定义方法`mysql_connection’:Class

我已经将rails2升级到rails3,当我尝试rake db:migrate时,我发现了以下错误 `rake aborted!` undefined method `mysql_connection’ for ActiveRecord::Base:Class /home/cis/.rvm/gems/ruby-1.9.3-p392@rails3214/gems/activerecord-3.2.14/lib/active_record/dynamic_matchers.rb:55:in `method_missing’ /home/cis/.rvm/gems/ruby-1.9.3-p392@rails3214/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_pool.rb:315:in `new_connection’ /home/cis/.rvm/gems/ruby-1.9.3-p392@rails3214/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_pool.rb:325:in `checkout_new_connection’ /home/cis/.rvm/gems/ruby-1.9.3-p392@rails3214/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_pool.rb:247:in `block (2 levels) in checkout’ /home/cis/.rvm/gems/ruby-1.9.3-p392@rails3214/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_pool.rb:242:in `loop’ /home/cis/.rvm/gems/ruby-1.9.3-p392@rails3214/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_pool.rb:242:in `block in checkout’ /home/cis/.rvm/gems/ruby-1.9.3-p392@rails3214/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_pool.rb:239:in `checkout’ /home/cis/.rvm/gems/ruby-1.9.3-p392@rails3214/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_pool.rb:102:in `block in connection’ /home/cis/.rvm/gems/ruby-1.9.3-p392@rails3214/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_pool.rb:101:in `connection’ /home/cis/.rvm/gems/ruby-1.9.3-p392@rails3214/gems/ar-octopus-0.6.1/lib/octopus/proxy.rb:153:in `select_connection’ /home/cis/.rvm/gems/ruby-1.9.3-p392@rails3214/gems/ar-octopus-0.6.1/lib/octopus/proxy.rb:215:in `method_missing’ /home/cis/.rvm/gems/ruby-1.9.3-p392@rails3214/gems/activerecord-3.2.14/lib/active_record/migration.rb:662:in `initialize’ /home/cis/.rvm/gems/ruby-1.9.3-p392@rails3214/gems/activerecord-3.2.14/lib/active_record/migration.rb:570:in `new’ /home/cis/.rvm/gems/ruby-1.9.3-p392@rails3214/gems/activerecord-3.2.14/lib/active_record/migration.rb:570:in `up’ /home/cis/.rvm/gems/ruby-1.9.3-p392@rails3214/gems/ar-octopus-0.6.1/lib/octopus/migration.rb:117:in `up_with_octopus’ /home/cis/.rvm/gems/ruby-1.9.3-p392@rails3214/gems/activerecord-3.2.14/lib/active_record/migration.rb:551:in `migrate’ /home/cis/.rvm/gems/ruby-1.9.3-p392@rails3214/gems/ar-octopus-0.6.1/lib/octopus/migration.rb:111:in `block in migrate_with_octopus’ /home/cis/.rvm/gems/ruby-1.9.3-p392@rails3214/gems/ar-octopus-0.6.1/lib/octopus/proxy.rb:171:in `run_queries_on_shard’ […]

如何一次访问一个标记

我有以下HTML: Some words. Some more words. Even more words. 如果我使用以下方法解析HTML: doc = Nokogiri::HTML(open(“http://my_url”)) 并运行 doc.css(‘#test_id’).text 在控制台我得到: => “Some words.\nSome more words.\nEven more words” 我如何才能获得第一个 元素? 我想我和.children一起.children doc.css(‘#test_id’).children[0].text 这是正确的方法吗?