Tag: ruby on rails

ActionView :: Template :: Error(不兼容的字符编码:UTF-8和ASCII-8BIT)

我使用Ruby 1.9.2,Rails 3.0.4 / 3.0.5和Phusion Passenger 3.0.3 / 3.0.4。 我的模板是用HAML编写的,我使用的是MySQL2 gem。 我有一个控制器动作,当传递一个具有特殊字符的参数,如变音符号,给我以下错误: ActionView::Template::Error (incompatible character encodings: UTF-8 and ASCII-8BIT) 该错误指向我的HAML模板的第一行,其中包含以下代码: 我的理解是,这是因为我有一个UTF-8字符串与ASCII-8BIT字符串连接,但我不能在我的生活中弄清楚ASCII-8BIT字符串是什么。 我已经检查过动作中的参数是用UTF-8编码的,我已经添加了一个编码:UTF-8声明到HAML模板的顶部和ruby文件,我仍然得到这个错误。 我的application.rb文件中也有一个config.encoding = “UTF-8″声明,以下所有结果都是UTF-8: ENV[‘LANG’] __ENCODING__ Encoding.default_internal Encoding.default_external 这是踢球者:我无法在开发或生产中使用独立乘客或杂种在我的Mac-OSX上本地重现此结果。 我只能在linux上运行nginx + passenger的生产服务器上重现它。 我已经在生产服务器的控制台中validation了后面提到的命令都是UTF-8的结果。 您是否遇到过同样的错误?您是如何解决的?

Ruby 1.9.2如何在Windows上安装RMagick?

我目前正在升级旧的rails应用程序以使用Rails 3和Ruby 1.9.2,而RMagick是我需要安装的最后一个gem。 但是,Windows似乎没有任何1.9.2下载,标准的gem安装RMagick也不起作用。 有人能指出我如何安装这个gem的正确方向吗?

从字符串中删除重音符号/变音符号,同时保留其他特殊字符(尝试过mb_chars.normalize和iconv)

有一个非常类似的问题 。 其中一个解决方案使用如下代码: string.mb_chars.normalize(:kd).gsub(/[^x00-\x7F]/n, ”).to_s 哪个有奇效,直到你注意到它还会删除空格,圆点,短划线以及谁知道还有什么。 我不是很确定第一个代码是如何工作的,但它是否可以仅删除重音? 或者至少要给出一个要保留的字符列表? 我对regexp的了解很少,但我尝试过(无济于事): /[^\-x00-\x7F]/n # So it would leave the dash alone 我要做这样的事情: string.mb_chars.normalize(:kd).gsub(‘-‘, ‘__DASH__’).gsub (/[^x00-\x7F]/n, ”).gsub(‘__DASH__’, ‘-‘).to_s 残暴? 是… 我也尝试过: iconv = Iconv.new(‘UTF-8’, ‘US-ASCII//TRANSLIT’) # Also tried ISO-8859-1 iconv.iconv ‘Café’ # Throws an error: Iconv::IllegalSequence: “é” 请帮忙?

停止设置清除会话

当用户通过标准Devise控制器注销时,Devise会破坏整个会话存储,而不仅仅是它自己的数据。 有什么方法可以避免这种行为吗? 我还有其他不相关的数据应该保留。 session[:my_var] = “123” 通过设计退出… puts session[:my_var] # => nil

按关联计数订购产品

类产品 has_many :sales end Class Sale belongs_to :product end 我如何获得最畅销的产品..(产品找到所有..订购.. ventas ..)?

Rails路由到用户名而不是id

我正在尝试将rails users从/ users / 1更改为/ username。 我目前正在设置它,因此它适用于显示和编辑的操作。 实际问题是,当我使用以下命令更新用户时: 它永远不会更新,因为更新操作被路由到/ users /:id。 有没有办法路由这个,以便它适用于/用户名? (作为动作在我的表单中呈现的路径)。 我已经在这一段时间里摸不着头脑了。 编辑: 问题是没有路由到用户名,它正常工作。 问题是表单路由到/ username以进行更新,但是用户的更新路由仍然是/ users /:id而不是:/ id。 我尝试更新我的路线,但无济于事: match ‘/:id’, :to => “users#show”, :as => :user match ‘/:id’, :to => “users#update”, :as => :user, :via => :put match ‘/:id’, :to => “users#destroy”, :as => :user, :via => :delete 编辑: 卫生署! 这解决了这个问题: […]

如何在Mac OS X上卸载Ruby on Rails?

我正在关注Ruby on Rails的教程,并且教程已经更新到Rails的新版本,因此我不能再遵循它了,因为我有一个旧版本。 我想在我的Mac OS X 10.5.8上开始新的并卸载Ruby on Rails和任何相关软件,并从头开始关注它。 如果有人愿意帮我卸载Ruby和Ruby on Rails,我们将不胜感激。

使用Ruby / Rails将嵌套哈希展平为单个哈希

我想在不同深度的哈希中“扁平化”(不是经典意义上的.flatten ),如下所示: { :foo => “bar”, :hello => { :world => “Hello World”, :bro => “What’s up dude?”, }, :a => { :b => { :c => “d” } } } 下到一个单一级别的哈希,并且所有嵌套的键合并为一个字符串,因此它将成为: { :foo => “bar”, :”hello.world” => “Hello World”, :”hello.bro” => “What’s up dude?”, :”abc” => “d” } 但我想不出一个好办法。 它有点像Rails添加到deep_ helper函数,但不完全相同。 我知道递归将是这里的方式,但我从未在Ruby中编写过递归函数。

如何从另一个目录中请求ruby文件

我想要一个我在另一个文件中创建的rake文件。 这两个文件位于两个不同的目录中。 我要求在我的第一个文件的顶部,在require之后的引号内有第二个文件的名称。 它告诉我它无法加载这样的文件。 这是否意味着因为它在不同的目录中找不到它? 我试着坚持第二个文件的完整路径,但它仍然无法加载文件。 有谁知道如何将第二个文件加载到第一个文件中? 提前致谢

就像Ruby on Rails中的按钮Ajax一样

我有一个Ruby on Rails项目,其中包括模型User和模型Content等。 我希望用户能够“喜欢”一个内容,并且我已经使用acts_as_votable gem完成了这项工作。 目前,喜欢系统正在运行,但每次按下喜欢按钮(link_to)时我都会刷新页面。 我想使用Ajax来做这件事,以便更新按钮和喜欢的计数器,而无需刷新页面。 在我的Content -> Show视图中,这就是我所拥有的: · users like this Content控制器这样做喜欢/不喜欢: def like @content = Content.find(params[:id]) @content.liked_by current_user redirect_to @content end def dislike @content = Content.find(params[:id]) @content.disliked_by current_user redirect_to @content end 在我的routes.rb文件中,这就是我所拥有的: resources :contents do member do put “like”, to: “contents#like” put “dislike”, to: “contents#dislike” end end 正如我所说,喜欢系统工作正常,但在用户按下之后不会更新喜欢的计数器或类似按钮。 相反,为了欺骗它,我在控制器动作中调用redirect_to @content 。 […]