Tag: 助手

将Rails 3转换为Rails 2:使用块的帮助程序

在Rails 3中,我使用以下帮助程序来获得奇偶色表: def bicolor_table(collection, classes = [], &block) string = “” even = 0 for item in collection string < (((even % 2 == 0) ? “even ” : “odd “) + classes.join(” “))) do yield(item) end even = 1 – even end return string end 我在我的观点中使用它: 现在,我必须将应用程序迁移到Rails 2.问题是Rails 2不使用Erubis,因此当它找到标记时,它只调用whatever.to_s。 所以,在我的情况下,这导致尝试执行 (bicolor_table(services) do |service|).to_s 带来明显(坏)的后果。 […]

Rails 3在所有表单上删除before_validation的空格

我对Rails相对较新,有点惊讶这不是一个可配置的行为……至少没有一个我能找到的?!? 我原以为99%的表单会受益于从所有string和text字段中修剪的空白?!? 猜猜我错了…… 无论如何,我正在寻找一种干燥的方法来从Rails 3应用程序中的表单字段(类型:string&:text)中删除所有空格。 视图有自动引用(包含?)并可用于每个视图的助手……但模型似乎没有这样的东西?!? 或者他们呢? 所以目前我做的是首先 要求的 , 然后 包括 whitespace_helper(又名WhitespaceHelper)。 但这对我来说似乎仍然不是很干,但它有效…… ClassName.rb: require ‘whitespace_helper’ class ClassName < ActiveRecord::Base include WhitespaceHelper before_validation :strip_blanks … protected def strip_blanks self.attributeA.strip! self.attributeB.strip! … end LIB / whitespace_helper.rb: module WhitespaceHelper def strip_whitespace self.attributes.each_pair do |key, value| self[key] = value.strip if value.respond_to?(‘strip’) end end 我想我正在寻找一个单一的(DRY)方法(类?)来放置一个( lib/ ?),它将获取一个params(或属性)列表并从每个属性w中删除空格( .strip! […]

Rails 4 – 轮播助手 – 图片库

我试图了解如何调整本教程,以制作我可以在我的Rails 4应用程序中使用的轮播助手。 https://www.toptal.com/ruby-on-rails/rails-helper-bootstrap-carousel 我帮助了: module CarouselHelper def carousel_for(images) Carousel.new(self, images).html end class Carousel def initialize(view, images) @view, @images = view, images @uid = SecureRandom.hex(6) end def html content = safe_join([indicators, slides, controls]) content_tag(:div, content, id: uid, class: ‘carousel slide’) end private attr_accessor :view, :images, :uid delegate :link_to, :content_tag, :image_tag, :safe_join, to: :view def indicators items […]

在Rails帮助器中的类中使用link_to

我有一个使用下面结构的rails帮助器,但是当我使用它时,我得到了消息 undefined method ‘link_to’ 帮助者安排如下: module MyHelper class Facet def render_for_search link_to(“Value”, params) end end class FacetList attr_accessor :facets def initialize #Create facets end def render_for_search result = “” facets.each do |facet| result << facet.render_for_search end result end end end

Rails url路径和资源路由

我有一个具体的问题。 所以如果没有人帮助我,我会理解的。 :)无论如何,提前谢谢! 如何使用资源和restful协议重构此代码? 特别是我的意思是render_with_hashtags_of_question(text)和render_with_hashtags_of_answer(text)方法和相关路线get ‘/questions/hashtag/:name’, to: ‘questions#hashtags’ 问题模型: require ‘active_support/all’ class Question < ActiveRecord::Base TAG_REGEX = (/#[\p{L}_]+/) belongs_to :user belongs_to :author, class_name: 'User' has_and_belongs_to_many :tags validates :text, :user, presence: true validates :text, length: { maximum: 255 } after_save :add_hashtags after_commit do self.tags.clear add_hashtags end private def add_hashtags hashtags = self.text.scan(TAG_REGEX) hashtags << self.answer.scan(TAG_REGEX) if […]

如何在资源上命名路由?

如果我有一个带有单个动作index的控制器Home ,我知道我可以写: get ‘home’ => ‘home#index” 我将自动拥有命名路径home_path 。 但如果我这样定义它: resources :home, only: :index 我得到了路线home_index_path 。 为什么这样,如果我使用resources约定,如何创建命名路由home_path 。

如何在time_select视图助手中设置时间?

我有一个time_select,其中我试图设置如下的时间值; (@invoice.start_time ? @invoice.start_time : Time.now) %> 这总是产生一个时间选择器,其中包含当前时间而不是@ invoice.start_time的值。 @ invoice.start_time实际上是一个日期时间对象,但如果我使用的话,这会被传递给时间选择器 我想我真正想问的是如何将:value选项与time_select助手一起使用。 像下面这样的尝试似乎没有产生预期的结果; (Time.now + 2.hours) %> “14:30” %>

在视图中使用帮助程序会转义html?

在我的ruby on rails应用程序中,我必须使用递归来呈现嵌套的注释。 因此我决定将渲染卸载到帮助器中的函数中。 该函数的基本结构如下: def display_comments(tree) to_render = “” to_render < ‘comment’, :locals => {:body => tree[:body]}}) tree[:children].each do |child| to_render << display_comment(child) end return to_render end 在视图中我称之为: 0 %> <%= display_comments(tree) 但是,在网页上,rails会转义所有的html,最终看起来像这样:

rails,用户在编辑个人资料后退出?

我想知道为什么用户在编辑他们的个人资料后会继续退出? 我的更新function是 def update flash[:notice] = “what is params[id]”, params[:id] @user = User.find(params[:id]) if @user.update_attributes(params[:user]) #flash[:success] = “Profile updated” sign_in @user redirect_to @user else render ‘edit’ end end params id正确传递,并且我的数据库上的所有内容都正确更新。 我在users/edit.html.erb是 Update your profile {:multipart => true} do |f| %> “btn btn-large btn-primary”, :style =>”display:block;” %> “image_avatar”) if @user.image? %> “upload_button” %> 我正在使用devise gem ,但这个编辑没有使用设计路线(我正在使用设计注册)。 […]

在rails中,哪里是放置需要“随处”可用的方法的正确位置

我有很多小实用工具方法(例如重新格式化或解析像字符串这样的简单对象)我一直在使用ApplicationHelper。 但是,ApplicationHelper方法显然无法通过模型中的类方法访问。 有一个解决方法,即在我的项目中撒上: include ApplicationHelper # needed to use apphelper method in instance method extend ApplicationHelper # needed to use apphelper method in class method 它似乎工作。 但它似乎是一个kludge。 是否有更好的地方放置实用程序方法,以便可以从我的项目中的任何位置访问它们 – 视图,控制器方法,模型实例方法,模型类方法?