小编fl0*_*00r的帖子

在rails中解析的路径

我正在寻找解析路径路径的方法,如下所示:

ActionController::Routing.new("post_path").parse
#=> {:controller => "posts", :action => "index"}
Run Code Online (Sandbox Code Playgroud)

它应该是相反的 url_for

UPD
我发现了: 什么是url_for在Rails的相反?获取路径并生成解释路线的函数?

ActionController::Routing::Routes.recognize_path("/posts")
Run Code Online (Sandbox Code Playgroud)

所以现在我需要转换posts_path成"/ posts"

ruby routing parsing ruby-on-rails

5
推荐指数
2
解决办法
3583
查看次数

vim和Ruby on Rails

我有工作的Mac,笔记本上的Ubuntu,服务器上的CentOS,女朋友的Windows和我的VM.我曾经gMate(Ubuntu)工作非常好,离TextMate我(在我的Mac上),e.texteditor(Windows)和nanoCentOs都不远.现在我想为我的所有环境安装一个编辑器.我可以选择vim或emacs.我认为vim更易于管理:).

我知道有一堆铁轨石头(插件):来自秋田,scrooloose,教皇等我前段时间尝过所有这些.所有这些都是马车(我认为问题在我手中).

所以我现在真正需要的是选择一个易于安装的插件.

第二大特色是你最喜欢的vim命令,如:

  • 打开文件夹作为项目(并将文件夹作为项目打开,并从公共目录中排除一些子文件夹)
  • 从我的项目快速打开文件
  • 打开reffering控制器/型号/帮手/等
  • 提取部分
  • 使用片段
  • 代码自动完成
  • Rails控制台/终端/ Git支持
  • 使用选项卡

来自*Mates的其他有用的东西.

我想设置vim face:左边的文件管理器,底部的控制台等等.我该怎么做呢.

赏金之后:感谢大家!要赢得vim!

ruby vim text-editor ruby-on-rails

5
推荐指数
2
解决办法
3667
查看次数

保护Carrierwave上传的文件

想要确保只有登录的用户可以查看/下载从carrierwave上传的文件.

这是怎么做到的?

将商店目录从公共目录移动到RAILS_ROOT,创建显示和下载的路径.

问题是如果它是一个图像,<%= image_tag(photo.image_url) %>我得到完整路径/Users/myname/projects/appname/files/image/id/image.png,这样就不会渲染.

此外,如果视图不会渲染我的绝对路径,只是来自网站的相对路径,那将是很好的.

file-upload ruby-on-rails carrierwave

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

Mongoid使用默认顺序embeds_many

如何将默认顺序设置为嵌入对象,例如:

class Post
  embeds_many :comments, :order => "author"
  accepts_nested_attributes_for
end
Run Code Online (Sandbox Code Playgroud)

现在我直接通过订单来处理它:

f.fields_for :comments, @post.comments.asc(:author) do |comment|
  ...
end
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails mongodb mongoid

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

闪存消息存储在哪里?

我以为它们存放在饼干中 - 但不,饼干检查没有给我任何东西.会话也不存储它们.那么,我能在哪里找到它们?

我需要这个来直接设置它们(而不是通过flash哈希).

ruby ruby-on-rails flash-message

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

迭代时返回迭代对象和索引

array = [1,2,3,{:name => "Peter"}, "hello"]
array.each do |element| # it can be "inject", "map" or other iterators
  # How to return object "array" and position of "element"
  # also next and priviouse "element"
end
Run Code Online (Sandbox Code Playgroud)

当然我可以返回索引array.index[element]但我正在寻找更自然的解决方案.就像proxy_owner在Rails协会中一样

Ruby 1.8.7

我要输出什么?我希望返回我迭代的对象(在我的情况下为数组),迭代次数(在each_with_index的情况下为索引)next和itei的属性元素.

作为输入我有一个数组和迭代器(每个,地图,注入等)

ruby

4
推荐指数
3
解决办法
4021
查看次数

在控制台中使用两个应用程序

我重建了一个项目.我已经迁移了数据库,现在我需要传输文件.我不能只复制粘贴它们.我需要重新处理它们.

如何在控制台(或Rake任务)中加载两个Rails应用程序并按以下方式工作:

App1.attaches.all.each do |attach|
  new = App2.attach.new attach.attributes
  new.file = attach.file.url
  new.save
end
Run Code Online (Sandbox Code Playgroud)

ruby rake ruby-on-rails paperclip ruby-on-rails-3

4
推荐指数
1
解决办法
54
查看次数

Mongoid:选择适合多个选项的嵌入对象

我有这个结构

class House
  include Mongoid::Document
  embeds_many :inhabitants
end

class Inhabitant
  include Mongoid::Document
  embedded_in :house
  field :name
  field :gender
  field :age
end
Run Code Online (Sandbox Code Playgroud)

我可以得到所有女性居住的房屋:

houses = House.where("inhabitants.gender" => "female")
Run Code Online (Sandbox Code Playgroud)

但是,如何才能获得50岁以下女性居住的所有房屋?如何为嵌入对象指定多个条件?

ruby ruby-on-rails mongodb mongoid ruby-on-rails-3

4
推荐指数
1
解决办法
2339
查看次数

将方法从一个类复制到另一个类

我想用一些方法编写小类,它们实际上属于其他类,所以如何在其他类中定义现有副本的方法.我相信这是我不明白的元编程魔法师.

class Foo
  def initialize
    # with blocks, I would just pass block, but this is methods
    # so this won't work
    Bar.class_eval(perform)
    Bar.class_eval(process)
    Bar.class_eval(save)
  end

  def perform
    1+1
  end

  def process
    # some code
  end

  def save
    # some code
  end
end

class Bar; end

foo = Foo.new
foo.perform
#=> 2
Bar.test
#=> 1
Run Code Online (Sandbox Code Playgroud)

为什么我需要这个?我正在研究gem,它只需要三个方法.在初始化时(可能隐藏在父类中),它会将此方法传递给不同的类.我可以使用块来制作它,但是使用方法它会更清洁.

PS:这就像从一个类复制方法到另一个类

PSS:或者...如何将方法转换为proc,所以我可以将它传递给class_eval

ruby metaprogramming proc

4
推荐指数
1
解决办法
2893
查看次数

如何获得当前的堆栈级别

我可以在Ruby中获得当前的堆栈级别吗?

目前我用的caller.size是好的,但看起来不是原生的

ruby stack stack-level

4
推荐指数
1
解决办法
673
查看次数