Tag: ruby on rails 4

Ruby on Rails中的Gem Vs插件与引擎

Ruby on Rails中Gem包,插件和引擎有什么区别? 我认为我们在Rails3.2之前使用插件,在rails3.2发布之后我们使用gem包作为插件但是如何在ROR中使用引擎?

如何同时覆盖Devise控制器和设计路由?

我使用Rails 4.0.2和Devise 3.2.2来处理用户注册/身份validation。 我用谷歌搜索并搜索stackoverflow的答案,无法找到能够回答我问题的东西。 下面的代码是我的routes.rb ,我已经跳过所有会话路由和注册路由但由于某种原因,Devise没有使用我的自定义registrations_controller.rb,因为如果是,它应该重定向到/ pages / success(请参见下面我的registrations_controller.rb) 的routes.rb App::Application.routes.draw do resources :posts resources :questions get “users/:id”, to: “users#show” devise_for :users, :controllers => {:registrations => “registrations”}, :skip => [:sessions, :registrations] as :user do get ‘login’ => ‘devise/sessions#new’, :as => :new_user_session post ‘login’ => ‘devise/sessions#create’, :as => :user_session delete ‘signout’ => ‘devise/sessions#destroy’, :as => :destroy_user_session […]

Rails 4应用程序中的子域名

今天我遇到了一个相当奇怪的现象。 在开发一个Rails应用程序时,每个用户都有自己的子域,并尝试使用Devise来完成它,我遇到了也没有注册任何路由到根页面的子域。 因此,例如,即使没有(显式)子域,它也会将我路由到主应用程序页面。 也许这与我的特定设置有关? 我也尝试了一个新的Rails项目,但我得到了相同的结果。 有人能为我澄清一下吗? Railscasts没有做到这一点。 此外,现在我正在使用WEBrick,即使这不是我将在生产中使用的,我正在使用域lvh.me来访问子域。 谢谢您的帮助。 编辑:这是我的routes.rb文件: Rails.application.routes.draw do devise_for :users root ‘static_page#index’ end 我遵循Devise wiki的这个指南: https : //github.com/plataformatec/devise/wiki/How-to :-Scope-login-to-subdomain 所以我做的是通过迁移删除了电子邮件的唯一性,然后我添加了:子域到request_keys,如下所示: devise :database_authenticatable, :recoverable, :rememberable, :trackable, :timeoutable, request_keys: [:subdomain] 然后我继续覆盖“find_for_authentication”函数,如下所示: def self.find_for_authentication(conditions={}) conditions[:account_id] = Account.find_by_subdomain(conditions.delete(:subdomain)).id super(conditions) end 这就是总结它。 编辑:我一直在搞乱,我发现了问题。 ‘root’指令将所有子域引用到我的域。 因此,如果我从routes.rb中删除root,则每个子域都会导致RouteError。 我记得在我的应用程序中为Devise需要一个root。 所以我不确定这是Devise的行为还是root。

购物车,可以使用Devise的会话function吗?

我正在写一个电子商务网站,我需要实现一个购物车function。 我希望客户能够在不事先注册的情况下将产品添加到购物车中,所以我想我会通过会话来实现这一目标。 这可以在Devise gem中完成,还是我必须实现自己的会话模型才能工作?

Rails 4 / Devise / MongoDB:使用自定义属性和强参数的“未允许的参数”

尝试将嵌套的自定义属性Profile (一个Mongoid文档)添加到我的设计用户类。 提交Devise注册表单时,它还应创建用户和相应的Profile对象。 我希望最终结果在我的MongoDB中看起来像这样: 用户: { # Devise fields: “email”: “my@email.com”, … # Custom field “profile” : “” } 轮廓: { “first_name”: “Dave”, …. } 不幸的是,每当我提交注册时,我都会在控制台中收到此消息。 它成功创建了一个用户,但无法创建关联的配置文件。 Started POST “/” for 127.0.0.1 at 2013-04-20 23:37:10 -0400 Processing by Users::RegistrationsController#create as HTML Parameters: {“utf8″=>”✓”, “authenticity_token”=>”awN2GU8EYEfisU0”, “user”=> {“profile_attributes”=> {“first_name”=>”Dave”, “birthday(2i)”=>”4”, “birthday(3i)”=>”21”, “birthday(1i)”=>”1933”, “occupation_title”=>”Software Developer”}, “password”=>”[FILTERED]”, “password_confirmation”=>”[FILTERED]”, “email”=>”my@email.com”}} […]

Rails 4控制器测试“未定义的方法许可”

我有一个基于Rails 4文档的简单控制器测试(使用Test :: Unit): test “should create user” do assert_difference(‘User.count’) do post :create, user: users(:sample_user) end assert_redirected_to user_path(assigns(:user)) end 而且,尽管实际用户被创建得很好,但测试失败了,他说: 1)错误:UsersControllerTest #test_should_create_user:NoMethodError:undefined method permit’ for “832959492”:String app/controllers/users_controller.rb:23:in users_controller.rb permit’ for “832959492”:String app/controllers/users_controller.rb:23:in user_params’app / controllers / users_controller.rb:8:in create’test create’ test/controllers/users_controller_test.rb:11:in ‘test / controllers / users_controller_test.rb create’ test/controllers/users_controller_test.rb:11:in块(2级)中:10:在`block in’中 由于某种原因,测试无法识别新的Rails 4 permit方法。 现在,我将user_params作为控制器中的私有方法。 但是,我尝试将其移动到实际的create操作并收到相同的错误。 用户创建也是100%标准(根本不像Rails文档那样疯狂)。 有谁知道如何重写或以其他方式使这个测试通过?

Rails Logger似乎是重复日志行

我在使用rails logger时遇到了一些奇怪的事情。 当我在代码中插入Rails.logger.info(“Some text”)时,通常是跟踪流程,我在控制台中得到两行“Some text”输出。 这通常不是什么大问题,但是当我转储较大对象的内容时,输出会变得很麻烦。 在我升级到Rails 4之前,这似乎永远不会发生,或者至少,我不记得它发生了。 有谁知道这里发生了什么,如果有办法停止复制日志输出?

由于缺少sqlite3 gem,Rails 4.0rc1应用程序未运行

我第一次尝试安装Rails 4.0。 在带有Ruby 2.0 x64的Windows 8上。 冉: gem install rails –version 4.0.0.rc1 –no-ri –no-rdoc 然后我跑: rails new test_app cd test_app rails s 但localhost:3000的网页报告以下错误: 为数据库适配器指定’sqlite3’,但未加载gem。 将gem’sqlite3 gem ‘sqlite3’添加到您的Gemfile中。 它在我的Gemfile中: gem ‘sqlite3’ 我尝试多次运行bundle install ,它甚至没有在所有其他gem中列出它。 更新 :我尝试以两种不同的方式安装sqlite3 gem,两者都使用从DevKit的msys.bat文件打开的终端。 @szines下面提到的方式给了我以下错误: $ gem install sqlite3 –platform=ruby — –with-opt-dir=c:/sqlite-amalgamation-3071602 Temporarily enhancing PATH to include DevKit… Building native extensions with: ‘–with-opt-dir=c:/sqlite-amalgamation-3071602’ […]

如何从rails 4中的按钮调用控制器方法

所以我现在感到很愚蠢,但我似乎无法找到答案。 所以我有一个方法需要一次完全调用,因为这只是实验阶段,我决定一个简单的按钮就足够了。 但是,我似乎无法找到如何/如果我可以简单地通过按钮单击调用该方法。 该方法位于home_controller.rb中,按钮位于index.html.erb中 有任何想法吗? 或者这不是我能做的事情吗?

Ruby on Rails 4 – 重复的回形针validation消息

有没有办法阻止validation消息出现两次Paperclip上传validation? 这是我的模型: has_attached_file :photo, :styles => { :thumb => “215×165” }, :default_url => “/images/:style/missing.png” validates_attachment :photo, :presence => true, :content_type => { :content_type => “image/jpg” }, :size => { :in => 0..0.5.megabytes } 这是我的观点: The following errors were found: – 如果我上传无效文件,我会收到以下错误消息: 照片内容类型无效 照片无效 有没有办法让其中一个出现? 我尝试过向模型添加消息: 但是,这也只是出现了两次! 谢谢!