所以我正在做一个lynda.com Rails基本培训教程,我收到一个视频教程没有的错误.我认为这与我正在使用的不同版本的Ruby&Rails(今天最新版本)有关,而不是他们在录制时使用的版本(我认为在2007年).
这就是我的控制器的样子:
class PublicController <ApplicationController
def album_list
@albums = Album.find_by_sql('SELECT * FROM albums;')
end
def alt_album_list
release_date = '2011-10-01'
artist = 'Paul'
@albums = Album.find(:all,
:conditions => ["release_date <= ? AND artist LIKE ?", release_date, '%' + artist + '%'],
:order => 'release_date ASC',
:limit => 1, :offset => 1)
render(:action => 'album_list')
end
def one_album_list
release_date = '2011-10-01'
artist = 'Paul'
@album = Album.find(:first,
:conditions => ["release_date <= ? AND artist LIKE ?", release_date, '%' + artist + …Run Code Online (Sandbox Code Playgroud) 这是我得到的错误:
NoMethodError in Devise::RegistrationsController#create
undefined method `trial_duration' for nil:NilClass
app/models/user.rb:120:in `set_trial_end'
Run Code Online (Sandbox Code Playgroud)
这是我的相关部分 User.rb
before_create :set_trial_end
def set_trial_end
plan = self.plan
end_of_trial = Date.today + self.plan.trial_duration.days
self.trial_end_date = end_of_trial.to_date
end
Run Code Online (Sandbox Code Playgroud)
奇怪的是,如果我查看我的数据库,对于分配了计划并查看trial_duration属性的用户,我会收到回复:
ruby-1.9.2-p0 > tu
=> #<User id: 29, email: "test50@abc.com", encrypted_password: "$2a$10$TKKQmBYem.vDq.mwDutv2u92Vick0X0jAIUQT6A9.FM....", password_salt: "$2a$10$TKKQmBYem.vDq.mwDutv2u", reset_password_token: nil, remember_token: nil, remember_created_at: nil, sign_in_count: 1, current_sign_in_at: "2011-06-18 23:03:12", last_sign_in_at: "2011-06-18 23:03:12", current_sign_in_ip: "127.0.0.1", last_sign_in_ip: "127.0.0.1", username: "test50", first_name: "Test", last_name: "Fifty", created_at: "2011-06-18 23:02:48", updated_at: "2011-06-18 23:03:12", invitation_token: nil, invitation_sent_at: nil, plan_id: …Run Code Online (Sandbox Code Playgroud) 所以我想要做的是根据flash消息的类型(即错误,通知等)将不同的类应用于包含flash消息的div.
我有这个application.html.erb:
<%- flash.each do |name, msg| -%>
<% if name = "error" %>
<%= content_tag :div, msg, :id => "flash_#{name}", :class => "alert-message error" %>
<% elsif name = "notice" %>
<%= content_tag :div, msg, :id => "flash_#{name}", :class => "alert-message success" %>
<% elsif name = "warning" %>
<%= content_tag :div, msg, :id => "flash_#{name}", :class => "alert-message warning" %>
<% end %>
<%- end -%>
Run Code Online (Sandbox Code Playgroud)
但是,它总是输出div有id=flash_error.
这是为什么?
更新1:
如果我将相等性检查更改为== …
说我有这样一个块:
<% @help_sections.each do |section| %>
<li><%= section.name %></li>
<% end %>
Run Code Online (Sandbox Code Playgroud)
但是在返回的最后一条记录中,我想做其他事情,例如在li那里应用一个类:
<li class="last"><%= section.name %></li>
我怎么用最干的方式做到这一点?
谢谢.
EDIT1:
我想我会简单地使用一个if语句和lastruby方法,但不知道如何在块中做到这一点?我知道,如果我只想要该数组中的最后一个元素,我可以这样做@help_sections.last,但这在Ruby块的范围内没有意义.
我的数组中有一个元素,当我打印出该特定元素的值时,我得到一个空值.
puts my_listing[2].inspect
[]
Run Code Online (Sandbox Code Playgroud)
当我检查该特定元素是否为空时,使用empty?它返回true:
puts my_listing[2].empty?
true
Run Code Online (Sandbox Code Playgroud)
但是当我循环遍历整个数组时,检查是否i为空,它找不到该特定元素.
my_listing.each do |i|
if i.empty?
puts i
end
end
Run Code Online (Sandbox Code Playgroud)
i(在这种情况下2)永远不会打印到屏幕上.
这是为什么?
基本上,我试图摆脱数组中的所有空元素(在这种情况下是索引处的元素2),但我不知道如何获得这些元素.
我错过了什么?
谢谢.
所以我的代码看起来像这样:
content_url = 'http://auburn.craigslist.org/cpg/index.rss'
doc = Nokogiri::XML(open(content_url))
bq = doc.xpath('//item')
Run Code Online (Sandbox Code Playgroud)
但它返回bq为空.
我知道它确实有这个标签,这是该页面上的前几个标签:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:ev="http://purl.org/rss/1.0/modules/event/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:admin="http://webns.net/mvcb/">
<channel rdf:about="http://auburn.craigslist.org/cpg/index.rss">...</channel>
<item rdf:about="http://auburn.craigslist.org/cpg/3012277218.html">...</item>
Run Code Online (Sandbox Code Playgroud)
思考?
在我看来,我这样做:
<td><%= client.last_contact.to_date %></td>
Run Code Online (Sandbox Code Playgroud)
这输出:
2011-08-11
Run Code Online (Sandbox Code Playgroud)
但是当我在控制台中执行此操作时,我得到了我想要的格式:
1.9.3p194 :093 > c.last_contact
=> Thu, 11 Aug 2011 00:00:00 UTC +00:00
1.9.3p194 :094 > c.last_contact.to_date
=> Thu, 11 Aug 2011
Run Code Online (Sandbox Code Playgroud)
在我看来,我希望它显示它在控制台中的日期和格式.
我如何实现这一目标?
谢谢.
说我有这样的数组:
[["bham", "php"],
["auburn", "php"],
["bham", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["mobile", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["tucson", "php"],
["tucson", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"]]
Run Code Online (Sandbox Code Playgroud)
我想做一些事情:
php第二个元素的数组的数量- 所以`["bham","php"]将计为1.bham在整个数组中auburn出现了多少次,以及出现了多少次等等.所以基本上,我想循环遍历这个2D数组,并且对于每个孩子的第一个元素,我想检查一下我是否已经记录了这个字符串 - 如果我有,那么我增加记录的值,如果我没有,那么我为这个新字符串创建一个新条目.这个特殊的数组相对简单,可以相对容易地在视觉上完成,但假设我将拥有一个包含数百/数千个元素的数组.
假设每个子数组的两个元素总是一个单词也是安全的 - 所以它应该相对容易跟踪.
我该如何处理?
我after_create在同一个模型上有两个回调,第二个依赖于一个属性(比如说client.score)不是nil.在第一个中,它运行计算并将有问题的属性设置为某个非零值.
但似乎即使我在我的模型文件中正确地使用它们,如下所示:
after_create :callback1
after_create :callback2
Run Code Online (Sandbox Code Playgroud)
每当callback2运行时,它仍然client.score是零.
如何强制第二个在第一个之后运行?
如果您去这里,并在搜索框中单击“位置”字段,然后选择任何选项,您将看到它们已添加到该字段中,您可以继续在“位置”字段中添加术语。
我在它自己的模型中实现了搜索功能,类似于本Railscast中 Ryan Bates所介绍的。
我不太确定如何使搜索建议和多选功能正常工作。是否有任何想法或任何教程或Railscasts的链接,或者只是有关如何实现此方法的一般建议?
谢谢。
附言:我可以查看自动完成的Railscast,但这不涉及多选方面。
autocomplete ruby-on-rails ruby-on-rails-3 search-suggestion