小编Tom*_*man的帖子

获取表示用户CanCan能力的字符串

我想缓存一个Post视图,但视图取决于当前用户的权限(例如,我只显示"编辑"链接current_user.can?(:edit, @post))

所以我希望我的缓存键包含当前用户的CanCan功能的表示,这样当用户的能力改变时我可以使缓存无效

那么:我怎样才能得到一个表示当前用户能力的字符串,以便2个具有相同能力的不同用户生成相同的"能力字符串"?

我已经尝试过user.ability.inspect,但是对于具有相同能力的不同用户,这不会产生相同的字符串

caching authorization cache-invalidation cancan

9
推荐指数
2
解决办法
2299
查看次数

最好的JavaScript组合框?

组合框是一个自动完成的文本框,也是一个下拉列表(例如,如果您愿意,可以从列表中进行选择).

"最佳"意味着组合:稳定,外观/感觉,API /可定制性,成熟度.

javascript user-interface combobox autocomplete

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

如何在在线商店应用程序中建模"产品"

我正在建立一个网上商店来销售"绿色超大号T恤"等产品.即,同样的衬衫可以有很多尺寸/颜色,不同的组合可以卖光,不同的组合可能有不同的价格等.

我的问题是我应该如何在我的Rails应用程序中建模这些产品(或者实际上如何在任何应用程序中进行建模).

我目前的想法是:

Class Product
  has_many :variants, :through => :characteristics
  has_many :characteristics 
end

Class Characteristic
  belongs_to :product
  belongs_to :variants
end

Class Variant
  has_many :products, :through => :characteristics
  belongs_to :characteristic
end
Run Code Online (Sandbox Code Playgroud)

因此,每个产品将具有一个或多个特征(例如,"颜色","尺寸"等),并且每个特征将具有一个或多个变体(例如,"红色","蓝色"等).

这种方法的问题是我在哪里存储价格和库存?即,给定产品的价格和库存由其特征所采用的变体决定.(绿色可能比红色更贵,大可能缺货等).

我有一个想法是给产品"base_price",并让变体修改它,但这看起来过于复杂(并且可能不起作用).

language-agnostic modeling ruby-on-rails e-commerce

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

Ruby相当于PHP的ucfirst()函数

Ruby中最好的方法是什么(使用Rails,如果相关的话)来大写字符串的第一个字母?

请注意,这String#capitalize不是我想要的,因为除了大写字符串的第一个字母之外,这个函数还使所有其他字符小写(我不想要它 - 我想保持它们不受影响):

>> "a A".capitalize
=> "A a"
Run Code Online (Sandbox Code Playgroud)

ruby string ruby-on-rails

8
推荐指数
3
解决办法
8409
查看次数

在用户执行某项操作后提示用户登录

你可以在我的说唱歌词解释网站上做的一件事是"喜欢"解释(一旦你登录):

http://dl.getdropbox.com/u/2792776/screenshots/2010-01-17_1645.png

我想向未登录的用户显示"赞"链接,然后,当未登录的用户点击"赞"时,向他显示一个带有"登录或注册"表单的灯箱(如Digg)/Reddit)

http://dl.getdropbox.com/u/2792776/screenshots/2010-01-17_1650.png

实现这一目标的最佳方法是什么?

目前我正在使用这种方法:

  1. 单击"喜欢"POST /annotations/:id/vote(POST主体指示用户是喜欢还是"不喜欢").
  2. vote注解控制器操作有一个require_user before_filter看起来像这样:

    def require_user
      unless current_user
        store_desired_location
        flash[:notice] = "You'll need to login or register to do that"
        redirect_to login_path # map.login '/login', :controller => 'user_sessions', :action => 'new'
        return false
      end
    end
    
    Run Code Online (Sandbox Code Playgroud)
  3. user_sessions#new 看起来像这样:

    def new
      @user_session = UserSession.new
      respond_to do |format|
        format.html {}
        format.js {
          render :layout => false
        }
      end
    end
    
    Run Code Online (Sandbox Code Playgroud)

问题是重定向似乎无法在javascript上正常工作:

http://dl.getdropbox.com/u/2792776/screenshots/2010-01-17_1700.png

如何让它正确重定向?

此外,这是正确的一般方法吗?另一个想法是当没有登录用户时,在javascript中为"Like"链接附加一个不同的处理程序(但我认为这种方法不能很好地扩展到我想以相同方式处理的其他操作)

authentication ruby-on-rails

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

表达"至少一个非数字"的正则表达式

我想根据这个架构验证用户名:

  1. 允许的字符:字母,数字,连字符,下划线
  2. 第一个字符必须是字母或数字
  3. 用户名不能是所有数字

这个正则表达式满足上面的1和2,但我无法弄清楚如何满足3:

/^[a-zA-Z\d][\w\-]+$/
Run Code Online (Sandbox Code Playgroud)

(我正在使用Ruby,如果那是相关的)

ruby regex

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

仅当成功保存父对象时,才将更改保存到has_many关联?

假设每一个Project has_many Tasks.

如果我做

some_project.tasks = list_of_tasks
some_project.save
Run Code Online (Sandbox Code Playgroud)

即使保存失败,项目的任务也会更新.如果list_of_tasks包含新记录,即使保存失败,项目的任务也会被删除!哇!

如果保存失败,项目应该具有与我开始搞乱之前相同的任务.我如何得到这种行为,为什么不是默认行为?

activerecord ruby-on-rails

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

每当有人尝试批量分配受保护的属性时,抛出异常

我正在修复客户端应用程序中的一些批量分配漏洞,我想确保Rails不会默默地丢弃大规模分配受保护属性的尝试.相反,我想抛出一个异常,所以我可以调查.

即,每当这通常出现在日志中时:

WARNING: Can't mass-assign these protected attributes: ...
Run Code Online (Sandbox Code Playgroud)

我想抛出异常(或者另外)

编辑:我正在使用Rails 2.3.4

activerecord attributes ruby-on-rails ruby-on-rails-2

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

Napkee值得吗?

Napkee声称:

只需按一下按钮,即可将Balsamiq Mockups导出为HTML/CSS/JS和Adobe Flex 3.

  • Balsamiq的完美伴侣
  • 无需编码技能
  • 一次使用后自行支付

如果真的"有效",那么Napkee可能会非常有用.

Napkee的工作是否像宣传的一样?导出的HTML的质量是什么?它是Balsamiq(我喜欢)的必备伴侣吗?

user-interface balsamiq

7
推荐指数
1
解决办法
2778
查看次数

使文本输入字段及其标签正确排列

这是一个相当标准的Rails表单的摘录:

  <p>
    <%= f.label :from_station %> <%= f.text_field :from_station %>
  </p>
  <p>
    <%= f.label :to_station %> <%= f.text_field :to_station %>
  </p>
Run Code Online (Sandbox Code Playgroud)

默认情况下,这样呈现如下:

alt text http://img412.imageshack.us/img412/127/picture6u.png

这看起来不太好,因为文本字段不对齐.使表单更像这样的最简单方法是什么:

alt text http://img193.imageshack.us/img193/746/picture7shk.png

我已经尝试width<label>s 上设置样式属性,但是这个属性似乎没有做任何事情.

css ruby-on-rails

7
推荐指数
1
解决办法
8550
查看次数