Tag: ruby on rails 5

在Rails项目中设计未定义的方法

我有一个安装了Devise gem的Rails 5应用程序。 我的项目是以这样的方式设置的,即所有控制器都是命名空间…甚至是Devise控制器。 在我的路由文件中,我已经完成了这个(这将更好地解释我的命名空间结构): controllers: { sessions: “api/v1/public/members/users/sessions”, passwords: “api/v1/public/members/users/passwords”, registrations: “api/v1/public/members/users/registrations”, }, path_names: { sign_in: ‘login’, password: ‘forgot’, sign_up: ‘register’, sign_out: ‘signout’ } 我还设置了设计视图文件以反映所需的命名空间结构。 我在ApplicationController.rb中包含以下内容: before_action :authenticate_api_v1_public_members_user! 由于我的Devise控制器是命名空间,标准’before_action:authenticate_user!’ 方法需要更新到上面的方法才能工作。 我遇到的问题是,我的任何视图都没有提供Devise帮助方法。 调用’current_user’或’user_signed_in?’时 在视图中,刷新浏览器时出现“未定义方法”错误。 我也试过命名这些辅助方法,但无济于事。 UPDATE模型在我的应用程序中没有命名空间。 我使用的是普通用户模型。 只有控制器是命名空间的,并且结构如上面的路由所示。 有没有人有类似问题的经验?

agged_with(params )ArgumentError:参数个数错误(给定2,预期为1)

我在Rails 5 beta 3中遇到了gem acts-as-taggable-on的问题。 project.rb : class Project < ActiveRecord::Base acts_as_taggable acts_as_taggable_on :skills end 的routes.rb get ‘tags/:skill’, to: ‘projects#index’, as: :skill projects_controller.rb : class ProjectsController < ApplicationController def index if params[:category] && Category.exists?(params[:category]) @category = Category.find(params[:category]) @projects = @category.projects.order("projects.created_at DESC") elsif params[:skill] @projects = Project.tagged_with(params[:skill]) else @projects = Project.all end @categories = Category.all end […]

Paperclip不保存在数据库中

我使用以下gem: ‘paperclip’ ‘aws-sdk’, ‘~> 2.3’ 我想将图像保存到S3,但无法让它们保存。 模型/ user.rb class User ‘, square: ‘200×200#’, medium: ‘300×300>’ } # Validate the attached image is image/jpg, image/png, etc validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/ end 移民 class AddAvatarToUsers < ActiveRecord::Migration[5.1] def self.up add_attachment :users, :avatar end def self.down remove_attachment :users, :avatar end end 控制器/ users_controller.rb class UsersController < ApplicationController […]

Rails 5 – ExecJS :: RuntimeError

我的项目工作正常,我正在调整使用chartkick创建的图表并使用ActionCable更新HTML徽章,突然之间我收到此错误: Pages#create_session中的ExecJS :: RuntimeError Showing B:/…/app/views/layouts/application.html.erb where line #7 raised: SyntaxError: [stdin]:14:32: unexpected end of input Extracted source (around line #7): 5 6 7 8 9 10 Application Trace | Framework Trace | Full Trace app/views/layouts/application.html.erb:7:in `_app_views_layouts_application_html_erb___430303067_44605968′ app/controllers/pages_controller.rb:145:in `render_page’ app/controllers/pages_controller.rb:46:in `create_session’ 我用Google搜索并发现此错误意味着我的系统上的JavaScript运行时存在问题 (我使用的是Windows 10)。 我尝试过的事情: 删除// = require_tree 。 来自application.js – 对我不起作用,因为我的所有JavaScript代码都不再起作用了(我的项目使用ActionCable) 修改C:\ RailsInstaller \ […]

Ruby reverse.each_with_index和delete_at导致最新的Ruby / Rails出现问题

所以,我很清楚在迭代块中移除项目的危险(这是反向循环),我知道Matz提到了一些关于迭代中的突变导致稳定性问题,但我似乎无法想象这一点。 这个例子有点令人费解,我不确定即使解决它也会完全复制这个例子,但我必须尝试。 arr1 = [1, 2, 3, 4, 5] arr2 = [3, 4, 5] puts arr1.inspect puts arr2.inspect arr2.each do |i| arr1.reverse.each_with_index do |j, index| if i == j arr1.delete_at(index) end end end puts arr1.inspect puts arr2.inspect 输出: [1, 2, 3, 4, 5] [3, 4, 5] [4, 5] [3, 4, 5] 应该是什么时候: [1, 2, 3, […]

Devise中的NoMethodError :: SessionsController#在使用“after_sign_in_path_for(resource)”时创建

我正在尝试为我的测验webapp编写function,允许重新连接的用户继续他们中断的地方(重新连接的可能原因是:因为他们丢失了连接,或者因为他们无意中注销,或者因为他们刷新了页面)。 所以我用Google搜索并找到了解决方案,我可以在”after_sign_in_path_for(resource)”编写方法”after_sign_in_path_for(resource)” ,并且在用户登录后,我在该方法中放置的任何内容都将由Devise执行。 当我尝试渲染静态页面(甚至是许多静态页面中的一个,取决于我保存到我的数据库的“阶段”参数)时,此解决方案非常有效。 但我的应用程序有2种用户: 单击从静态页面到静态页面的链接的“教师” “学生”,无法控制,但只要教师点击(推送=通过ActionCable收到HTML并替换当前页面),就会推送新的HTML 那么现在学生登录时会发生什么: after_sign_in_path_for(resource) :确定用户是学生并进行呼叫 我的quiz_session模型中的find_current_page方法:它检查我的数据库中的phase变量,并调用我的频道服务器端的多个方法之一,例如 我的IndividualUpdateChannel resend_question_page类方法:此方法构建html并将其广播给Student。 但是:代替接收和显示发送的HTML,学生得到“Devise中的NoMethodError :: SessionsController #create – 未定义的方法`student_url’for#” 。 在日志中它看起来像1.,2。和3.运行,但然后突然应用程序尝试将学生重定向到某个地方? 并失败。 这是控制台输出: https : //pastebin.com/FKmHF4qS … [ActionCable] Broadcasting to student_#3: {:phase=>1, :answers=>[“The call returns immediately without waiting for the I/O to complete.”, {“ids”=>[9, 10, 11, 12], “current_question_index”=>1}]} Redirected to Completed 500 Internal Server Error […]

Rails 5渲染部分和传递数据

我无法了解数据传递的一般方式,并且可供部分使用。 例如: 我有一个控制器将实例变量交给一个渲染部分的模板: static_pages_controller.rb: def home @feed_items = current_user.feed end home.html.erb: _feed.html.erb: 现在,在我的User模型中是一个实例方法,它进入数据库以获取她的post: user.rb: def feed Micropost.where(“user_id = ?”, id) end 因此,不知何故,因为Micropost.where(…)返回一个微_feed.html.erb的集合是Rails如何知道从_feed.html.erb转到另一个部分,其中 定义了如何定义微_feed.html.erb ? _micropost.html.erb: <li id="micropost-“> 而且它只是一个惯例,因为我真的处理一系列microposts ,Rails知道micropost可变吗?

Rails路由出现在路由中但抛出404

我正在尝试向现有的控制器/操作添加一个简单的路由,但奇怪的是,即使路径似乎存在,我也会收到404错误。 这是我的routes.rb的相关部分: # Wines scope ‘wine’ do get ‘/’, to: ‘wines#index’, as: ‘wine_index’ get ‘/:collection’, to: ‘wines#collection_detail’, as: ‘collection_detail’ get ‘/:collection/:slug’, to: ‘wines#wine_detail’, as: ‘wine_detail’ get ‘/:style’, to: ‘wines#style_detail’, as: ‘style_detail’ end 这似乎是正确的,因为这是我在检查时看到的内容: $ rake routes => Prefix Verb URI Pattern Controller#Action wine_index GET /wine(.:format) wines#index collection_detail GET /wine/:collection(.:format) wines#collection_detail wine_detail GET /wine/:collection/:slug(.:format) wines#wine_detail style_detail […]

在Rails中单击按钮时传递参数

现在,我有它,以便当用户从collection_select选择一个选项时,将根据他们选择的event_id填充div。 根据Event ,将显示多个EventOption ,每个EventOption都有自己独特的ID。 (我将EventOption作为belongs_to Event ,每个Event都有很多。) 这是我在选择Event时通过JS / Ajax填充的内容: Available Options for “”: Name: Description: Price: “button”, :id => “available-dates-button” %> @event.id), :id => “book-now-button”, :class => “button” %> 我的问题是,当他们点击Book This Event Now!时,我可以传递event_id Book This Event Now! ,但那不是我需要的。 我需要特定的:id要传递的:event_option :id ,我不知道如何从迭代中获取它。 .each我都来自它。 如何确保我的book_now_path的按钮的每次迭代都有一个可用于完成预订的唯一ID?

在rails 5中ActiveSupport :: MessageVerifier :: InvalidSignature:ActiveSupport :: MessageVerifier :: InvalidSignature错误

在迁移到rails 5之前,它运行良好,但是当我迁移到rails 5.1.1时,它给我的错误就像 ActiveSupport :: MessageVerifier :: InvalidSignature:ActiveSupport :: MessageVerifier :: InvalidSignature 我使用了以前版本的rails中使用的相同密钥。 防爆。 crypt = ActiveSupport::MessageEncryptor.new(Rails.configuration.secret_key_base) 执行以下行后,我收到了上述错误。 @password = crypt.decrypt_and_verify(User.last.encryptedpass)