小编mrb*_*rdo的帖子

每个动作的Rails布局?

我对某些操作使用不同的布局(主要用于大多数控制器中的新操作).

我想知道指定布局的最佳方法是什么?(我在同一个控制器中使用3个或更多不同的布局)

我不喜欢用

渲染:layout =>'name'

我喜欢这样做

layout'name',:only => [:new]

但我无法使用它来指定2个或更多不同的布局.

例如:

当我在同一个控制器中调用布局2次,使用不同的布局名称和不同的选项时,第一个被忽略 - 这些操作不会显示在我指定的布局中.

注意:我正在使用Rails 2.

ruby-on-rails

160
推荐指数
7
解决办法
7万
查看次数

Rails服务对象与lib类

简短版本:什么时候应该把东西放到app/services而不是lib /.

我最近一直在服务对象路线上,但我意识到有时我不能真正决定天气我应该将某些东西提取到服务对象(我在app/services中)或者在我的lib文件夹中的类中.

我经常寻找的一件事是,如果类需要访问params或其他特定于控制器的东西(即作为初始化程序中的参数),那么我倾向于将其放入服务中.

这里的约定是什么?证明(链接)会很好:)

ruby-on-rails ruby-on-rails-3

34
推荐指数
2
解决办法
4285
查看次数

添加关联(<<)而不提交到数据库

在Rails中是否可以在不立即将此更改提交到数据库的情况下向现有记录添加关联?例如,如果我有Post has_many:标签

post.tags << Tag.first
Run Code Online (Sandbox Code Playgroud)

这将立即提交到数据库.我尝试过其他方式而不是<<,但没有成功(我想要的是在保存父对象时创建关联).是否有可能获得类似于使用build添加新记录的关联时的行为?

post.tags.build name: "whatever"
Run Code Online (Sandbox Code Playgroud)

我认为这在Rails中有点不一致,在某些情况下,选择执行此操作会很有用.

换句话说,我想要

post.tags << Tag.first # don't hit the DB here!
post.save # hit the DB here!
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-3

23
推荐指数
1
解决办法
5523
查看次数

Rails 3 facebook插件/ gem?

有没有人知道一个好的Rails 3兼容的gem或插件支持Facebook API(而不是Graph API,但旧的REST也可以)?主要用于获取个人资料图片,信息,朋友和在墙上发布.我正在寻找一些似乎保持良好的东西,所以我知道我将来也可以依赖它.

facebook ruby-on-rails

8
推荐指数
2
解决办法
1万
查看次数

Rails(3)服务器 - 现在用什么?

我一直在使用Ruby Enterprise Edition和Passenger(对于Apache,因为我为其他事情运行Apache)已经有一段时间了,但是我想知道现在服务器上有什么用的新趋势.例如,我听说过Thin,Unicorn ......我也知道1.9.2比REE快,但我想知道RAM消耗.我宁愿让它消耗更少的RAM,即使牺牲一些速度.

谢谢你的建议.

ruby ruby-on-rails ruby-on-rails-3

6
推荐指数
2
解决办法
2811
查看次数

Rails 3灵活的CMS框架

这里还有一些其他类似的问题,但是当Rails 3仍然处于测试阶段时它们已经相当陈旧了.

我正在为Rails 3寻找一个CMS系统.我需要具有基本功能(页面,SEO等)和良好/易扩展性的东西.除了我想要的可扩展性之外,最重要的特性是一个很好的WYSIWYG编辑器.我将使用它为客户构建CMS,并需要一些灵活的东西,我可以轻松扩展以满足他们的需求.由于HTML将由其他人准备,我需要选择使用html.erb格式或类似的东西.

我见过的一些: - Refinery CMS - Radiant CMS(这个rails 3兼容吗?不确定......) - Typus - BrowserCMS

那么,你们推荐什么,为什么?

ruby-on-rails ruby-on-rails-3

5
推荐指数
1
解决办法
2467
查看次数

使用Jasmine隔离测试Marionette模块

我有一个Marionette项目,类似于http://www.backbonerails.com/中描述的设置. 我正在使用Rails,Coffeescript和Jasmine/Sinon进行规范.

我在隔离测试模块时遇到问题.一个例子是路由器:

@MyApp.module "DashboardApp", (DashboardApp, App, Backbone, Marionette, $, _) ->

  class DashboardApp.Router extends Marionette.AppRouter
    appRoutes:
      "dashboard" : "showDashboard"

  API =
    showDashboard: ->
      DashboardApp.Show.Controller.showDashboard()

  App.addInitializer ->
    new DashboardApp.Router
      controller: API
Run Code Online (Sandbox Code Playgroud)

我不确定如何与App(window.MyApp)隔离测试.我想基本上触发"#dashboard"路由并断言showDashboard被调用,而不必让整个应用程序参与其中.我们正在使用Rails资产管道(因此没有RequireJS),因此所有JS文件都在start时加载.我认为可行的方法是以某种方式模拟此模块中使用的App对象,但我对任何解决方案持开放态度.

我有类似的另一个问题是测试Marionette命令和reqres,例如在我看到的视图中

App.execute("navigate:root")
Run Code Online (Sandbox Code Playgroud)

问题是我不想让真正的应用程序参与规范,我想例如为规范制作一个新的Marionette.Application.该视图位于一个模块中,该模块的定义方式与我在第一个代码示例中显示的方式相同.

基本上我想避免在规范中使用真正的应用程序,并使用模拟或(可能更好/更容易)只是一个新的Marionette.Application.因此,在事物通过应用程序对象的所有情况下,这对我来说都很有用,例如Wreqr的东西,路由器的初始化器等.

coffeescript backbone.js jasmine sinon marionette

5
推荐指数
1
解决办法
2210
查看次数

仅当管理员用户未登录时才执行Rails操作/片段缓存

有没有办法在"admin"用户登录时禁用动作/片段缓存(例如当current_user.role ="admin"时)?

我在我的网站上使用缓存,但是当管理员用户登录时,我会添加一些额外的链接到某些缓存的东西.管理流量实际上是最小的,所以我只想缓存普通用户看到的内容.当管理员登录时,我基本上希望为他关闭缓存.

我不是要问整页缓存,只是片段.

ruby-on-rails

2
推荐指数
1
解决办法
884
查看次数