Tag: 的Ruby on 轨道

用户控制器中的Rails错误NoMethodError#显示错误

undefined method ‘key?’ for nil:NilClass 这是我在阅读M. Hartl的Rails教程时遇到的错误。 此外,保存我的user_controller.rb文件并刷新http://localhost:3000/users/1 ,我收到另一个错误: Gem::LoadError in UsersController#show bcrypt-ruby is not part of the bundle. Add it to Gemfile. 然而,bcrypt-ruby在我的gemfile中,并且在我再次刷新之后,此错误消失了。 它有点奇怪。 这是我的user_controller.rb class UsersController < ApplicationController def show @user = User.find(params[:id]) end def new end end 这是我的show.html.erb , 非常感谢你们。

options_for_select选择的值不起作用

我有一个projectuser数据的表单,但是当我编辑projectuser时,所选的projectuser保持为空,出了什么问题? 这是代码: = f.select :user_id, options_for_select(@users.map{ |u| [u.full_name, u.id] }, selected: @projectuser.full_name), include_blank: true

没有路由匹配{:action =>“show”,:controller =>“schools”}缺少必需的键:

我不知道为什么我无法为我项目中的每所学校创建信息链接。 这是完整的错误: 没有路由匹配{:action =>“show”,:controller =>“schools”}缺少必需的键:[:id] 这是我的index.html.erb: schools_controller.rb: class SchoolsController < ApplicationController def show @school = School.find(params[:id]) end def new @school = School.new end def edit @school = School.find(params[:id]) end def index @schools = School.all end def create @school = School.new(school_params) @school.save redirect_to @school end private def school_params params.require(:school).permit(:name) end end

将添加到“每个块”,每个结果使用rails 3

我有一个像每个块一样的东西: HTML结果: John kevin Peter Andrew . . . 我想添加一个 每个结果如下: John kevin Peter Andrew 我希望每行显示2个结果。 我该怎么做?

Rails 5 ActionCable从URL参数建立流

我对Rails几乎是全新的,或者我相信我会知道如何自己回答这个问题。 我只是想修改基本的ActionCable演示中创建的基本聊天应用程序: https ://medium.com/@dhh/rails-5-action-cable-demo-8bba4ccfc55e#.6lmd6tfi7 我想拥有多个聊天室,而不是只有一个聊天室,所以我通过添加以下行来修改我的routes.rb : get ‘/rooms/show/:topic’, to: ‘rooms#show’ 所以现在我可以根据不同的主题访问不同的聊天室。 /app/controllers/rooms_controller.rb的房间控制器处理这些路线没有问题: class RoomsController < ApplicationController def show @topic = params[:topic] @messages = Message.all end end 但是这个参数没有传递给app/channels/room_channel.rb ,我只是不确定我需要做什么修改。 我目前的尝试: class RoomChannel < ApplicationCable::Channel def subscribed stream_from "room_channel_#{params[:topic]}" end 只返回“room_channel_”

实现ActiveModel Dirty Rails的问题3.2.8

我想检查模型上的属性何时发生了变化。 我试图检查值!=在执行保存之前表单上的值但该代码实际上很难看并且有时不能正常工作。 与使用update_column相同,update_column不在我的模型类中进行validation。 如果我在不做其他事情的情况下使用update_attributes,我将无法检查何时根据我的理解更新字段。 从我对Stack Overflow和其他网站的网络研究看来,使用ActiveModel Dirty是可行的方法。 我看过这个: http : //api.rubyonrails.org/classes/ActiveModel/Dirty.html 我希望在使用update_attributes之后使用它来检查模型上是否更改了布尔标志。 我尝试按照附带链接中的描述进行最小化实施。 我在ActiveRecord类中添加了以下内容: include ActiveModel::Dirty define_attribute_methods [:admin] 我尝试添加我想要跟踪的三个属性。 我从一个属性开始,看看我是否能让它工作。 我运行rspec测试时收到以下错误。 一旦我删除了论点,我就没有错误。 Exception encountered: # 删除参数后,我决定使用admin而不是name在我的模型中包含类似的方法。 其他Rspec测试打破了save方法。 但是我觉得问题在于我如何实现ActiveModel Dirty。 我已阅读其他Stack Overflowpost,其中评论者表示这已包含在3.2.8中,因此我从3.2.6升级到3.2.8。 我不明白这是什么意思所以在得到错误之后我决定离开include ActiveModel :: Dirty语句并尝试使用admin_changed? 当然它没有用。 除了我在这里提供的链接之外,我还没有找到任何关于如何为此设置的内容。 我发现的所有其他研究都假定初始设置是正确的,并且更新到当前稳定版本的Rails会解决他们的问题。 任何帮助将不胜感激如何实现这一点。 执行链接中所述的最小实现是行不通的。 也许还有其他我想念的东西。

Rails生成错误的复数forms

当我在rails控制台中执行以下操作时,我使用Ruby 1.9.3和Rails 3.2.9: 1.9.3p125:003>“脚”.pluralize =>“脚”#不应该是“脚”吗? 1.9.3p125:004>“牙齿”.pluralize =>“牙齿”#不应该是“牙齿”吗? 1.9.3p125:009>“goose”.pluralize =>“gooses”#不应该是“鹅”吗? 是rails中的一个错误复数还是我做错了什么?

Devise – Omniauth – 如果用户通过Facebook登录,则隐藏密码字段

使用Devise与Omniauth我成功地允许用户使用他们的Facebook帐户登录。 在Omniauth wiki的帮助下,我还可以禁用在编辑帐户时输入密码。 我遇到的当前问题是如果他们通过Facebook registrations#edit ,则在我的registrations#edit视图中隐藏密码字段。 作为两个gem的新手我还在努力调整。 因此,在设置必要的辅助方法时,我有点不知所措。 根据维基的指示,这是我的注册控制器的样子: class RegistrationsController true redirect_to after_update_path_for(@user) else render “edit” end end private # check if we need password to update user data # ie if password or email was changed # extend this as needed def needs_password?(user, params) user.email != params[:user][:email] || params[:user][:password].present? || params[:user][:password_confirmation].present? end protected […]

在Heroku上使用多部分表单路由问题

这是一个非常奇怪的问题,不幸的是我无法提供大量的信息,因为我甚至不知道从哪里开始诊断问题。 我希望有人听到神奇地知道该怎么做,我很乐意在必要时澄清。 出于某种原因,无论何时我使用Chrome在Heroku上提交带有文件附件的新的多部分表单,我都会在提交默认的“索引”操作时发送 – 也就是说,如果我提交了我将被发送到的页面一个GET而不是一个POST。 我在Rails中使用标准的RESTful路由,所以我在routes.rb中有以下内容: resources :documents do member do get :download, :follow end end 我的表格很标准: { :multipart => true } do |f| %> 但同样,这被视为GET而不是POST请求,因此我只是被重定向到/ documents。 即使我在表单定义中手动指定:method => :post也是如此。 真正非常奇怪的是,这只发生在Heroku上,只发生在Chrome上。 表单在我的本地开发版本上使用Chrome或在Heroku上使用Safari正常工作。 代码中的任何地方都没有重定向,当我检查Heroku日志时,它只报告对/ documents的GET,而不是后续处理的POST可以解释这一点。 任何帮助将不胜感激。 我真的不知道从哪里开始尝试解决这个问题。 更新:我使用的是Chrome for Mac,版本12.0.742.53 beta。 这是表单输出。 …. …. 这些路线似乎没有什么不妥,包括以下内容: POST /documents(.:format) {:action=>”create”, :controller=>”documents”}

在Rails中随机选择n个对象

我有一个名为Post的模型,有一个名为vote的列,它有很多post 我想随机选择n个有> = x票的post。 与post数量相比,n非常小 做这个的最好方式是什么? 我尝试了几种似乎非常低效的方法。 谢谢