我想创建一个类似CMS的站点,用户可以从一些通用页面开始,即
例如,从那里可以动态添加子页面
为了达到这个目的,我计划使用某种自我指涉关联
class Page < ActiveRecord::Base
belongs_to :parent, :class_name => 'Page'
has_many :children, :class_name => 'Page'
end
Run Code Online (Sandbox Code Playgroud)
我正在努力的一件事是路线生成.因为页面可以动态添加,我需要为这些页面动态生成路由,并且无法知道页面可以嵌套多少层次
所以,如果我从主页开始:/
然后开始添加页面即
/用品/第一条/某事/东西,否则/另一个,事情
如何使用rails路由模型实现类似的功能?
我需要使用Rails应用程序中的现有PostGIS数据库.到目前为止,我能够很好地访问数据库,GeoRuby很好地将'geom'列转换为Point对象.
我正在寻找的是一种在这些表上执行类似ActiveRecord的查询的简单方法,例如
Poi.find_within_radius(...)
Run Code Online (Sandbox Code Playgroud)
或类似的空间查询,如距离计算等.人.
我尝试了几种geokit组合,附带了rails插件,但我确信在ruby/rails宇宙中必须有更好的东西.任何提示?
有没有人知道宝石或允许用户向模型添加字段的良好实现?
防爆.
用户希望在联系人模型中添加"内部注释"字段.在界面中,他们只需选择"新字段">"类型:文本"
谢谢
对于一个新的应用程序,我想开始涉足BDD,我试图在使用RSpec或Thoughtbot的Shoulda之间做出决定.我喜欢Shoulda使用的宏,以及它似乎没有重新发明Ruby/Rails测试的方式,而只是提供了一个附加组件.另一方面,宏似乎有点太"神奇",而不是明确你正在测试的东西(但是我知道,从涉及写一打很烦人"应该是无效的,没有xxx"两行上一个模型).说实话,我发现编写模型的规格/测试很简单,而且几乎非常容易,但我觉得为控制器编写它们是非常困难的,因为我不确定我应该测试什么或者如何编写它.
因为我认为它们给你错误的假设(因为你可以告诉它认为它有你需要的任何数据或者假装方法X被调用)我不知道嘲弄和抄写的主题我知道RSpec重使用它们.我喜欢RSPec生成的文档,但我正在创建一个销售应用程序,而不是给客户端,因此漂亮的文档并没有那么有用.我喜欢Cucumber,但它似乎有点矫枉过正(是的,我知道它可以和Shoulda一起使用).
在这一点上,Rails社区支持RSpec或Shoulda?
在Rails控制器或视图的范围内:如何查询Rails路由机制以将相对url字符串(例如"/ controllername/action/whatever")转换为负责处理该请求的控制器类?
我想做这样的事情:
controllerClass = someMethod("/controllername/action/whatever")
Run Code Online (Sandbox Code Playgroud)
contorllerClass是Class的一个实例.
我不想对路由约定做任何假设,例如.以上示例中的"controllername"始终是控制器的名称(因为它不是).
有没有办法在routes.rb或控制器中获取URL的哈希值(例如/ posts/show#35中的"35")?
我的印象是这从未发送到服务器,但我只是想确定.
谢谢!
汤姆
这是我第一次使用Rails,我想知道是否可以在一个SQL查询中加载一个多态关联?它们之间的模型和关联足够基本:资产模型/表可以通过多态关联引用内容(图像,文本或音频),即
class Asset < ActiveRecord::Base :belongs_to :content, :polymorphic => true end
图像,文本,音频定义如下:
class Image < ActiveRecord::Base :has_one :asset, :as => :content end
当我尝试加载图片时,请这样说:
Image.first(
:conditions => {:id => id},
:include => :asset
)
它指定了两个查询,一个用于检索Image,另一个用于检索资产(FYI,如果我指定a,也会发生这种情况:joins).根据我的理解,ActiveRecord这样做是因为它不知道Image和Asset之间存在一对一的关联.有没有办法强制连接并一次检索2个对象?我也尝试使用自定义选择连接,但我最终必须手动创建ActiveRecord模型及其关联.
ActiveRecord是否提供了这样做的方法?
我正在使用Apache Proxy balancer指令来连接一组瘦服务器(用于Rails).
像这样:
<Proxy balancer://thinservers>
BalancerMember http://127.0.0.1:5000 route=thin0
BalancerMember http://127.0.0.1:5001 route=thin1
BalancerMember http://127.0.0.1:5002 route=thin2
</Proxy>
Run Code Online (Sandbox Code Playgroud)
但是,thin也可以配置为使用unix域套接字.
所以我希望能够做到这样的事情:
<Proxy balancer://thinservers>
BalancerMember unix://tmp/thin.0.sock route=thin0
BalancerMember unix://tmp/thin.1.sock route=thin1
BalancerMember unix://tmp/thin.2.sock route=thin2
</Proxy>
Run Code Online (Sandbox Code Playgroud)
但Apache没有接受它.显然nginx可以做到,但我真的想使用Apache.
有办法吗?
我在版本2.3.5中使用'binarylogic-searchlogic'gem以及Rails 2.3.4.
我想要做的是在模型上搜索多个属性上的指定值.我通过将所有东西链接在一起来实现这一点
User.first_name_or_last_name_or_email_like(value)
Run Code Online (Sandbox Code Playgroud)
但是在这个搜索中有越来越多的属性,这往往是丑陋的.相反,我想使用searchlogic的搜索机制,如下所示:
search = User.search
search.first_name_like = value
search.last_name_like = value
..
@users = search.all
Run Code Online (Sandbox Code Playgroud)
所以这是通过AND搜索的方式 - 但我想要的是OR.我找到了两种方法来实现这一目标,但两种方法都不起作用.
第一个:在条件前面加上or_
search = User.search
search.first_name_like = value
search.or_last_name_like = value
@users = search.all
Run Code Online (Sandbox Code Playgroud)
这给了我 The or_last_name_like is not a valid condition. You may only use conditions that map to a named scope
第二个:使用 search.any
search = User.search
search.first_name_like = value
search.last_name_like = value
@users = search.any
Run Code Online (Sandbox Code Playgroud)
给了我undefined method任何'for #`.
有什么想法吗?我是否认为自述的正确点?
谢谢你非常欢迎的帮助!
编辑:一些丑陋的解决方法的时间:
search = User.search
search.first_name_like …Run Code Online (Sandbox Code Playgroud) 什么是错误的这句话它显示语法错误
<%= link_to image_tag('cancel.png'), {:action => 'remove', :id => question.id}, :title=>'Delete', :class=>'action', :onclick=>"removeQuestion("+ question.id +");return false;"%>
Run Code Online (Sandbox Code Playgroud)
但
<%= link_to image_tag('cancel.png'), {:action => 'remove', :id => question.id}, :title=>'Delete', :class=>'action', :onclick=>"removeQuestion();return false;"%>
Run Code Online (Sandbox Code Playgroud)
正确生成以下代码
<a title="Delete" onclick="removeQuestion();return false" class="action remove" href="/quizzes/remove/1"><img src="/images/cancel.png?1290165811" alt="Cancel"></a>
Run Code Online (Sandbox Code Playgroud) ruby-on-rails ×10
activerecord ×3
apache ×1
bdd ×1
mod-proxy ×1
postgis ×1
rspec ×1
searchlogic ×1
shoulda ×1
spatial ×1
thin ×1