Tag: ruby on rail

Rails:JSON还是REST吗?

我对网络开发还很新,所以如果这个问题真的很愚蠢,请耐心等待。 我正在尝试遵循REST原则,但是,我非常感谢JSON如何与Ruby以及通过API从外部连接的任何内容。 我知道它在REST中非常标准直接将参数输入到URL中,如下所示:myurl.com/ExampleModel/MyIDParameter并将JSON(如果有的话)发送到该URI,对吧? 我想知道的是:从URI中删除参数(以及如果我永远不会使用它的路由)是否违反REST原则并将参数包含在JSON中? 例如,而不是调用它: myurl.com/ExampleModel/id { “name” : “My Name”, “anotherParameter” : “A random string” } 你会这样称呼: myurl.com/ExampleModel { “id” : 512, “name” : “My Name”, “anotherParameter” : “A random string” }

Rails中的页面视图

我不确定解决这个问题的最佳方法是什么。 我想显示页面视图和用户视图(有多少独特用户查看了页面)。 有插件吗? login_count当然很容易检查。 只是不确定观点。 Google Analytics可以很好地完成这项工作,但我不知道通过分析集成是否合适。 有帮助吗? 谢谢。 节日快乐!

Carrierwave默认图像不显示

我正在尝试在我的Rails 3.2应用程序中显示默认图像。 我已经按照Carrierwave github页面上的说明进行了操作,并查看了几个Stackoverflowpost。 但是,由于某种原因,它仍然无法正常工作。 这是我的代码: 在我的photo_uploader.rb文件中,我启用了这个: def default_url “/images/” + [version_name, “default.png”].compact.join(‘_’) end 在我的表单和显示视图中,我正在访问这样的图像: 我的图像的路径是: /app/assets/images/default.png 在我的application.rb中,我添加了以下行,因为它应该允许提供静态资产: config.serve_static_assets = true 但是,我的服务器在加载页面时显示以下内容: ActionController::RoutingError (No route matches [GET] “/images/default.png”) 我也试过重新编译我的资产。 关于我做错的任何想法?

在开发中使用sqlite3进行CarrierWave多文件上传的解决方法

在我的团队开发环境中,我们使用的是Rails默认的sqlite3。 但是,carrierwave的多文件上传实现需要支持array / json数据类型的数据库。 是否有任何解决方法,以便它可以在我们的开发环境中工作,而无需安装其他数据库,如postgres? 我按照这里的说明https://github.com/carrierwaveuploader/carrierwave#multiple-file-uploads

rails 3:使用devise进行身份validation,如何允许使用guid而不是登录来访问报告页面

我的rails 3应用程序每个帐户只需要一个用户登录(例如,没有角色)。 我正在使用Devise,我很高兴。 但我的用户需要能够与其他不需要或不想登录帐户的经理共享一些屏幕(主要是状态报告)… 我正在考虑为每个这样的“外部”报告创建和存储一个guid(每个帐户+报告都是唯一的),所以链接如 http://myapp.mydomain.com/pagename?token=GUID_GOES_HERE 将访问该页面(但只有该页面) 问题: a)有没有办法允许登录帐户用户访问页面,但也允许guid绕过设计认证 b)帐户用户(例如,区域经理)是否有更好的方式与未登录的用户(例如,商店经理)共享某些报告屏幕?

carrierwave:thumb错误的参数数量

我跟随Ryan Bates的载波Railscast http://railscasts.com/episodes/253-carrierwave-file-uploads 。 有一次,在将图像调整为缩略图后,他会使用以下代码显示缩略图 我在profilepic实例变量上调用url方法并尝试获取这样的缩略图 但是我得到了错误 wrong number of arguments (1 for 0) 它不期望:thumb参数。 在image_uploader中,我安排像这样创建缩略图(在安装rmagick之后) version :thumb do process :resize_to_limit => [50, 50] end 任何人都可以解释我可能做错了什么吗? 我在主题Rails上找到了一个SO问题:image_tag问题 ,它解释了参数(在这种情况下:thumb)需要传递给对象的url方法(而不是对象本身)。 这就是我正在做的事情,但我收到了错误。

在ApplicationController中覆盖current_user会引发未定义的方法错误

基于stackoverflow问题来覆盖devise的current_user,我写了这样的东西: class ApplicationController < ActionController::Base alias_method :devise_current_user, :current_user def current_user if !devise_current_user.nil? return # my logic end return nil end end 两个问题:1。它抛出了一个未定义的方法错误,我定义了alias_method …. 2.在devise_for方法中,我的覆盖current_user将被传递还是设计的current_user?

ruby on rails – routes.rb – 当文件名中存在多个句点时匹配文件扩展名

我已经根据这里的说明创建了一个路由加控制器,用于在rails上的ruby中执行动态css: http://www.misuse.org/science/2006/09/26/dynamic-css-in-ruby-on-rails/ 需要一些更改才能在rails上考虑更新版本的ruby,但问题在于routes.rb条目。 原来的条目是这样的: # dynamic CSS (stylesheets) map.connect ‘rcss/:rcssfile’, :controller => ‘rcss’, :action => ‘rcss’ 这不适用于较新版本的RoR,我发现这个解决方案有效: # dynamic CSS (stylesheets) map.connect ‘rcss/:rcssfile.css’, :controller => ‘rcss’, :action => ‘rcss’ 但是,现在我感到很遗憾,我无法获得一个catch-all文件类型扩展处理程序。 请求必须具有.css扩展名。 进一步玩弄它我想出了这个: # dynamic CSS (stylesheets) map.connect ‘rcss/:rcssfile.:format’, :controller => ‘rcss’, :action => ‘rcss’ 所以这要好得多。 现在,我可以请求以.foobar或其他任何forms结束的文件,并将其与处理程序进行匹配。 不是我必然,但更多的是理解一切。 所以我尝试创建一个类似“foo.net.rcss”的文件。 现在似乎第一个点弄乱了一切。 “没有路线匹配rcss / foo.net.css”。 我的问题如下: 无论文件名中有多少个点,我如何匹配任何文件名和任何扩展名? 为什么第一个示例在以后的RoR版本中不起作用? […]

Rails:delayed_job邮件没有发送

我正在尝试在Rails 3.2中使用delayed_job gem https://github.com/collectiveidea/delayed_job在后台发送邮件。 我安装了gem gem ‘delayed_job_active_record’ 我按照指示生成了表并运行了迁移 $ rails generate delayed_job:active_record $ rake db:migrate 注意到Rails 3中有针对邮件程序的特殊说明 # without delayed_job Notifier.signup(@user).deliver # with delayed_job Notifier.delay.signup(@user) 我做到了 def send_welcome_email #UserMailer.welcome_email(self).deliver <– original code that worked UserMailer.delay.welcome_email(self) end 但是邮件没有发送。 在我尝试使用delayed_job之前它正在工作…… 有人可以为新手澄清……?

Rails,Devise:相同的资源,基于用户类型的不同控制器

我有一个资源,比如Product ,可以通过两个不同的用户类访问:比如Customer和Admin 。 这两者之间没有inheritance。 我正在使用Devise进行身份validation: # config/routes.rb devises_for :customers deviser_for :admins 我有这两个控制器: # app/controllers/customers/products_controller.rb class Customers::ProductsController < ApplicationController 和 # app/controllers/admins/products_controller.rb class Admins::ProductsController < ApplicationController 现在,根据谁登录( Customer或Admin ),我希望products_path指向相应的控制器。 我想避免使用customers_products_path和admins_products_path ,这很麻烦。 所以我已经设置了我的路线 # config/routes.rb devise_scope :admin do resources :products, module: ‘admins’ end devise_scope :customer do resources :products, module: ‘customers’ end 这不起作用。 当我以Customer身份登录时, products_path仍然指向Admins::ProductsController#index因为它是第一个定义的。 任何线索? 没有黑客行为,我想做的事情可能根本不可能。 更新根据代码 […]