我在我的控制器中有这个:
@artists = Artist.where("artist LIKE ?", "%#{params[:term]}%").limit(500).paginate(params[:page])
Run Code Online (Sandbox Code Playgroud)
我收到了can't dup NilClass错误.
现在,params [:term]和params [:page]是两个不同的变量,为什么错误会出现呢?如果我删除第二个params变量,则错误消失.
即使我这样做,它仍然会出现:
page = params[:page]
Run Code Online (Sandbox Code Playgroud)
然后在下面:
paginate(page)
Run Code Online (Sandbox Code Playgroud)
我想了解为什么会发生这种情况以及如何解决它,如何在没有该错误的同一行中使用params()中的2个变量.
编辑
我发现用一个整数代替params [:page]会导致一个稍微不同的错误:can't dup FixNum所以问题可能不是params而是其他问题.但仍然不知道如何解决它.
我有一个UICollectionView20个细胞,imageView里面有一个.当用户点击正确的单元格时,我imageView在该单元格中绘制另一个单元格(一个正确的圆圈让它调用它).这很好用.
但我也有一个标题UICollectionView,我问他们需要回答的问题.每次点击(等待2秒)后,问题应该更新,我有一个更新标题文本标签的功能,这也可以正常工作.
我的问题是:为了更新Header文本,我必须调用uicollectionView.reloadData(),每当我这样做时UIImageView,我在单元格中绘制的(correctCircle)会被移动到另一个单元格!
我已经尝试了我能想到的一切,包括这个线程中的解决方案: UICollectionView reloadData在iOS 7中无法正常运行
但无法让它发挥作用.任何想法都非常受欢迎.理想情况下,我只刷新标题而不是其他细胞,但似乎没有办法做到这一点.
编辑:根据评论略微改变代码,现在我在每个单元格中有2个图像,一个是隐藏的,然后我显示它,而不是添加imageView点击.
这是一些相关的代码:
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as CollectionViewIconCell
// bigIcon() just returns the animal's icon image
cell.icon.image = animalsArray[indexPath.row].bigIcon()
return cell
}
override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
// we cannot use a dequeueReusableCellWithReuseIdentifier, we need this
let cell = collectionView.cellForItemAtIndexPath(indexPath) as CollectionViewIconCell …Run Code Online (Sandbox Code Playgroud) 我厌倦了Textmate.这很棒,但它已经老了,不断撞到我身上.在(什么,3 +?)年没有发展等.
所以我正在寻找一个可行的替代方案.但是,我不想要一个在Java上运行的臃肿和慢速编辑器(所以NetBeans,Komodo,Eclipse等都出来了),也不想包含厨房Sink(再见Coda,我已经拥有Espresso但是我非常失望之后)这么长时间新版本不包括变量自动完成,严重的Macrabbit!).Bbedit对我来说有点过于愚蠢.
总而言之,正如标题所说,Textmate替代品是现代的,稳定的并且仍在开发中.主要用于PHP开发.这样的野兽存在吗?
提前致谢.
我正在使用 FSCalendar 并且需要周视图始终从今天开始,然后显示一周的价值。
有人知道怎么做吗?
谢谢。
我知道这听起来很奇怪,但在我的开发盒上我不能回到1.8.7,因为在MAMP中安装Passenger和Mysql Ruby gem是一个巨大的痛苦,我现在不想惹它它正在工作.
但是,对于部署,我的托管公司有Ruby 1.8.7,所以我在脚手架创建的新语法中遇到了一些错误.所以问题是,是否有可能在使用Ruby 1.9.2时强制Rails使用Ruby 1.8.7语法?
我知道这听起来很愚蠢,可能根本不可能,但只是想确定一下.
好吧,这可能听起来像一个愚蠢的问题,但我遇到了各种各样的问题,我相信必须有一种简单的方法来做到这一点:
如果变量有长度,你如何检查 ruby ?
如果我使用它,当它没有长度时@dvds.length?会出现错误undefined method length for ...。
基本上,我有一些搜索主要是检索 ActiveRecord:Relation,但一两个只是返回一个条目,因为它们是按 id 搜索的。我有这样的事情:
@total = @dvds.length
Run Code Online (Sandbox Code Playgroud)
显示我们找到了多少。
当@dvds 不包含任何长度时,我收到未定义方法的错误。我做了类似的事情:
if @dvds.class == 'ActiveRecord:Relation'
Run Code Online (Sandbox Code Playgroud)
绕过一个错误,但这是可怕的并且容易出现更多错误。
必须有一种 Ruby 方法来检查变量是否具有长度,这样更漂亮更容易,不是吗?
理想情况下,我正在寻找类似的东西:
@total = @dvds.length if @dvds.length
Run Code Online (Sandbox Code Playgroud)
或者类似的。
谢谢。
我有一些 HAML 代码在 10 个视图中重复出现,并希望将其放入某种帮助程序中。在这里进行搜索产生了一些有趣的结果,但最终没有答案,所以:
在application_helper.rb我有这个:
def pagination_helper(object)
haml_tag :div, :class => 'apple_pagination page_info' do
page_entries_info @book_formats
paginate @book_formats
end
end
Run Code Online (Sandbox Code Playgroud)
在视图模板中,我有这个:
- pagination_helper(@book_formats)
Run Code Online (Sandbox Code Playgroud)
如果我尝试调用它=以输出某些内容,则会出现错误。
以上不会给我一个错误,但它也不会调用这些方法。我得到空的div。
最终我想重复的代码是这样的:
.apple_pagination.page_info
= page_entries_info @book_formats
= paginate @book_formats
Run Code Online (Sandbox Code Playgroud)
代码将是相同的,除了object会发生变化并且我从视图模板发送它。例如@book_formats将更改为@dvds等。
我默认为所有模型启用了Delta索引:
ThinkingSphinx::Index.define :book, :with => :active_record, :delta => (::Padrino.env == :production ? ThinkingSphinx::Deltas::SidekiqDelta : true) do
Run Code Online (Sandbox Code Playgroud)
我想转增量索引断开运行Rspec的时候(因为它需要较长时间的测试运行,我也得到了delta.spl文件无法访问的错误:FATAL: failed to open db/sphinx/test/book_delta.spl: No such file or directory, will not index. Try --rotate option.)
我试图在spec/support/sphinx.rb文件中将其设置为false,如在TS文档中所述:
config.before(:suite) do
ThinkingSphinx::Test.init, suppress_delta_output: false
ThinkingSphinx.deltas_enabled = false # try to turn delta indexing off for the Controller and Model tests
end
Run Code Online (Sandbox Code Playgroud)
但是,对于每个插入新数据的测试,delta索引仍在进行,即使是插入Factory Girl工厂的数据也是如此.
将此行:ThinkingSphinx.deltas_enabled = false放入我的任何规范中会导致缺少方法错误:: undefined method对于ThinkingSphinx:模块,deltas_enabled ='
我怎么能把它关掉?
这里还有另一个问题,主题相同,但没有得到正确回答,这就是为什么我再次问它,答案中的信息陈旧且不准确。
例如,heroku restart将不清除日志并在生产模式下运行时,它不是东西,你可以做。
有没有办法完全清除它们?
Rails在部分内部创建逗号分隔列表的最优雅方式是什么?
我刚刚发现你可以使用partials迭代从另一个视图模板发送的集合.所以在视图模板中我有:
<% render @dvd.director %>
Run Code Online (Sandbox Code Playgroud)
然后在/view/directors/_director.html.erb中:
<%= director.director %>
Run Code Online (Sandbox Code Playgroud)
这实际上做了类似的事情:
@dvd.director.each { |d| puts d.director }
Run Code Online (Sandbox Code Playgroud)
现在,我知道我可以像这样使用.join:
<% @dvd.director.map { |t| t.director }.join(", ") %>
Run Code Online (Sandbox Code Playgroud)
但是由于部分已遍历数组中的每个条目,我如何正确地分离列表而不是最后一个(或单个一个)在末尾有一个丑陋的逗号?
很多条目只有一个导演,我只是想把那些有多个导演分开.我知道我可以手动完成所有这些操作(使用正常的,非迭代的部分并自己创建.each循环),但我正在尝试这样做,并学习Rails方式.
谢谢.
编辑
为了更好地解释一下,@ dvd.director返回一个ActiveRelation对象,如下所示:
[#<Director id: 13, director: "Andrew Stanton">, #<Director id: 14, director: "Lee Unkrich">]
Run Code Online (Sandbox Code Playgroud)
所以我不能这样做 @dvd.director.join(', ')
有没有其他方法可以获得除此之外的数据
@dvd.director.each { |dir| dir.director }
Run Code Online (Sandbox Code Playgroud)
因为我有同样的问题,我必须计算它们或确保它不是最后一项,然后我在它们之间放一个逗号,或者只提取导演名称并将它们放入字符串或类似的东西.如果我可以加入,那就太好了.
我使用 Rails 编程已经大约 7 个月了。主要是一个管理数据库的应用程序,你知道,清理、更新、删除、查找孤立条目等。
我有一个 API 可以与我们用 PHP 编写的桌面程序进行对话。我们现在发现自己想要将所有内容都转移到 Ruby。该 API 需要快如闪电,并且不会有任何类型的视图或 HTML 页面,它只会通过 JSON 与我们的应用程序通信,发送和接收应用程序将显示和使用的数据。
所以,基本问题是,我应该学习 Sinatra 和 Padrino(使用 ActiveRecord)并用它们构建 API,还是在 Rails 中进行?
如果我使用 Rails,我可以保留很多我拥有的代码,甚至可以使用现有的代码,因为所有表都是相同的(数据库是相同的),只需为 API 编写更多方法。
我认为这样做的缺点是双重的:
学习 Sinatra 和 Padrino 可能需要更多工作,但会带来更清晰的代码和一个用于 API 的单独 Ruby 应用程序,以及另一个用于维护的应用程序,这听起来更好。
但我对Sinatra和Padrino一无所知,占用空间和速度真的比Rails好吗?
我非常感谢那些实际使用过 Rails 和 Sinatra 以及 Padrino 的人对此的意见。
干杯。
ios ×2
swift ×2
activerecord ×1
command-line ×1
fscalendar ×1
haml ×1
heroku ×1
padrino ×1
php ×1
rspec ×1
ruby ×1
sinatra ×1
textmate ×1