小编mar*_*ion的帖子

Rails 3中未定义的方法/ NoMethodError

所以我正在做一个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)

ruby-on-rails ruby-on-rails-3

0
推荐指数
1
解决办法
4794
查看次数

为什么Rails会为我的模型中存在的属性提供"无方法错误"? - Rails 3

这是我得到的错误:

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)

ruby-on-rails ruby-on-rails-3

0
推荐指数
1
解决办法
982
查看次数

为什么这个阻止不会遍历我的所有flash消息? - Rails 3.1

所以我想要做的是根据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)

但是,它总是输出divid=flash_error.

这是为什么?

更新1:

如果我将相等性检查更改为== …

ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

0
推荐指数
1
解决办法
169
查看次数

在每个块的Ruby中,如何对块内数组中的最后一条记录执行某些操作?

说我有这样一个块:

<% @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块的范围内没有意义.

ruby sinatra

0
推荐指数
1
解决办法
708
查看次数

检查我的数组中的空元素 - 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),但我不知道如何获得这些元素.

我错过了什么?

谢谢.

ruby

0
推荐指数
1
解决办法
6584
查看次数

为什么xpath不返回此XML节点?

所以我的代码看起来像这样:

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)

思考?

ruby xml nokogiri

0
推荐指数
1
解决办法
685
查看次数

为什么在我的视图中输出日期的格式与Rails控制台中的to_date格式不同?

在我看来,我这样做:

  <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)

在我看来,我希望它显示它在控制台中的日期和格式.

我如何实现这一目标?

谢谢.

datetime ruby-on-rails ruby-on-rails-3

0
推荐指数
2
解决办法
1061
查看次数

如何以我想要的方式对这个数组进行排序?

说我有这样的数组:

[["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)

我想做一些事情:

  1. 计算具有php第二个元素的数组的数量- 所以`["bham","php"]将计为1.
  2. 计算每个第一个元素在整个列表中出现的次数.即bham在整个数组中auburn出现了多少次,以及出现了多少次等等.所以基本上,我想循环遍历这个2D数组,并且对于每个孩子的第一个元素,我想检查一下我是否已经记录了这个字符串 - 如果我有,那么我增加记录的值,如果我没有,那么我为这个新字符串创建一个新条目.

这个特殊的数组相对简单,可以相对容易地在视觉上完成,但假设我将拥有一个包含数百/数千个元素的数组.

假设每个子数组的两个元素总是一个单词也是安全的 - 所以它应该相对容易跟踪.

我该如何处理?

ruby

0
推荐指数
1
解决办法
66
查看次数

如果我有两个`after_create`语句,我如何确保一个在另一个之前运行?

after_create在同一个模型上有两个回调,第二个依赖于一个属性(比如说client.score)不是nil.在第一个中,它运行计算并将有问题的属性设置为某个非零值.

但似乎即使我在我的模型文件中正确地使用它们,如下所示:

after_create :callback1
after_create :callback2
Run Code Online (Sandbox Code Playgroud)

每当callback2运行时,它仍然client.score是零.

如何强制第二个在第一个之后运行?

ruby-on-rails ruby-on-rails-3

0
推荐指数
1
解决办法
56
查看次数

如何在Rails中实现多选自动完成文本框?

如果您去这里,并在搜索框中单击“位置”字段,然后选择任何选项,您将看到它们已添加到该字段中,您可以继续在“位置”字段中添加术语。

我在它自己的模型中实现了搜索功能,类似于本Railscast中 Ryan Bates所介绍的。

我不太确定如何使搜索建议和多选功能正常工作。是否有任何想法或任何教程或Railscasts的链接,或者只是有关如何实现此方法的一般建议?

谢谢。

附言:我可以查看自动完成的Railscast,但这不涉及多选方面。

autocomplete ruby-on-rails ruby-on-rails-3 search-suggestion

0
推荐指数
1
解决办法
1651
查看次数