Articles of ruby on rails 3

Rails:rake db:test:准备Vs rake测试:准备

作为指南,用于准备测试数据库的命令是 bundle exec rake db:test:prepare 但是,我发现以下命令也适用于我并为我创建了测试数据库。 bundle exec rake test:prepare 如果是的话,想知道这是否是一个有效的命令。 我在哪里可以找到文档。 在rails 3.2.8测试rails 3.2.8

ActiveRecord的:: UnknownAttributeError?

我只是将应用程序推送到生产Heroku环境。 基本上有一个Bus模型,它有一个seats属性 class Bus < ActiveRecord::Base attr_accessible :seats, # other attributes end 现在我有一个JavaScript前端,POST的JSON用于新总线到buses#create action。 我尝试创建总线时,ActiveRecord遇到错误: : POST www.busables.com/buses dyno=web.1 queue=0 wait=5ms service=65ms status=500 bytes=728 : : ActiveRecord::UnknownAttributeError (unknown attribute: seats): : app/controllers/buses_controller.rb:31:in `new’ : app/controllers/buses_controller.rb:31:in `create’ 参数正在达到控制器动作。 我可以记录它们,然后我得到了以下内容: The bus parameters received: {“seats”=>”24”, “departure_time(1i)”=>”2011”, “departure_time(2i)”=>”11”, “departure_time(3i)”=>”25”, “departure_time(4i)”=>”16”, “departure_time(5i)”=>”15”, “route_attributes”=>{“summary”=>”N51”, “beginning_address”=>”A place”, “terminal_address”=>”Another place”, “distance”=>26362, “duration”=>1753}} […]

帮助者“fields_for”无法正常工作

我正在使用嵌套属性,但我的视图中未加载字段。 有人知道我错过了什么吗? Rails 3.1,Ruby 1.9.2 型号1: class Traditions::Material :destroy validates_presence_of :title accepts_nested_attributes_for :material_asset end 型号2: class Traditions::MaterialAsset < ActiveRecord::Base belongs_to :material has_attached_file :asset validates_attachment_presence :asset end 查看(HAML): = form_for @material, :html => {:class => ‘form’, :multipart => true} do |f| = errors_for @material .field = f.label :title = f.text_field :title .field = f.label :description = […]

设计Flash消息不会显示

Devise在我的应用程序中运行得很好,除了来自devise.en.yml的flash消息没有显示在视图中。 我究竟做错了什么? 以下是我的注册页面视图我已经尝试了两个:alert和:notice但不工作。 先感谢您 Sign up resource_name,:url => registration_path(resource_name)) do |f| %> “devise/shared/links” %>

从父应用程序重新打开Rails 3引擎类

就目前而言,只需在父应用程序的/app目录中添加相同的类,就无法重新打开引擎/app目录中包含的Engine类。 例如: /my_engine/app/controllers/users_controller.rb /my_app/app/controllers/users_controller.rb 如果父应用程序中存在my_engine文件,则my_engine的文件甚至不会加载。 更多细节在这里: http://www.cowboycoded.com/2011/02/28/why-you-cant-reopen-rails-3-engine-classes-from-the-parent-app/ 我正在寻找一种解决方法,允许我在与父应用程序相同的路径中删除相同的文件名/类,并重新打开而不是覆盖该类。 也许我错过了一些明显的东西。 我能够使用一个使用class_eval的单独文件(不同的文件名)来完成这项工作,但我对这个解决方案并不满意。 关于优雅解决方案的任何想法? 我也想知道这个限制背后是否有原因,或者它只是rails如何加载文件(参见包含链接)而非故意的结果。 在我看来,改变引擎的负载行为以允许以这种方式重新打开类将是rails中的一个很好的特性。 我知道一开始我很困惑,我相信其他开发人员也会为这个问题而烦恼。

为什么Ruby on Rails书或引用总是说更新是由PUT而Destroy是由DELETE而不是?

因为如果我使用Fiddler来监控它,它是: CRUD Method Path With Idempotent? action —- —— —- —- ———– —— Create POST /foos/ No create Retrieve GET /foos/:id Yes show Update POST /foos/:id _method=put Yes update Destroy POST /foos/:id _method=delete Yes destroy 所以实际上并没有使用PUT和DELETE (作为HTTP动词)。 但为什么Rails书籍和参考文献总是说它是PUT和DELETE ?

Redmine插件 – 每次代码更改后都需要重启

我正在研究redmine上的一些插件(使用Ruby on Rail编写的项目管理Web应用程序)。 对于我对插件代码所做的每一个更改(比如view.html.erb文件),我必须重新启动redmine(应用程序)服务器。 这是因为它默认在生产模式下运行。 将在开发模式下运行应用程序,解决这个问题? 如果是,我如何更改其运行模式或覆盖此行为,以便每个请求加载类(是的,这将不是有效但将有利于开发)并且代码的更改反映而无需重新启动应用程序应用程序服务器(在这种情况下redmine) 我尝试将此行添加到environment.rb文件中 ENV[‘RAILS_ENV’] ||= ‘development’ 还尝试了下面发布的答案/评论,但他们没有解决我的问题。 任何有效的解决方案都会有很大的帮助。 谢谢。 其他相关信息: 它使用Rails 2.3.14并使用bitnami堆栈安装

Rails:过滤索引页面和重新显示filter输入

我不确定Rails 3的正确方法是什么。 我希望在我的索引视图顶部有过滤条件字段,用于过滤数据。 我下面的内容用于过滤我的列表,但我也希望过滤字段重新填充当前filter的内容,我无法弄清楚如何做到这一点。 我在下面工作的方法也不像是“正确”的方法来实现这一点,因为它依赖于将空字符串传递给视图中的字段辅助方法之类的东西。 控制器: def index @animals = Animal.by_color(params[‘:color’]).by_age(params[‘:age’]).paginate(:page => params[:page]) respond_to do |format| format.html # index.html.erb format.xml { render :xml => @animals } end 结束 视图: Listing Animals Filter By: { :action => “index” }, :html => {:method => :get} ) do |f| %> Color: 10 ) %> Age: … 我正在使用我的模型中的范围方法,它非常灵活。 我只是模糊了Controller如何“params”方法和View方法“form_for”,“text_field”相互映射。 […]

rails attr_accessible rspec check

当我想测试RSpec是否无法访问属性时我就是这样做的 class Foo attr_accesible :something_else end describe Foo do it(‘author should not be accessible’) {lambda{described_class.new(:author=>true)}.should raise_error ActiveModel::MassAssignmentSecurity::Error} it(‘something_else should be accessible’){lambda{described_class.new(:something_else=>true)}.should_not raise_error ActiveModel::MassAssignmentSecurity::Error} end 这样做有更好的方法吗? …谢谢

渲染:validation后新的没有到正确的位置

我有一个在post模型中validation的“新”表单。 当validation器启动时,它会呈现错误。 新的post页面路径位于’/ posts / new’ 在validation时,新的post页面路径位于’/ posts’..我需要它回到’/ posts / new’。 这是我的控制器: def create @post = current_user.posts.build(params[:post]) if @post.save redirect_to public_post_page_path(@post.public_url) else render :action => :new end end 我觉得这可能与我的表格有关。 所以这是formtastic的第一行: {:id => “post_form”} do |form| %>