显示未调用的方法 - Rails

时间:2015-04-20 07:37:40

标签: ruby-on-rails methods parameters rails-routing active-rest-client

我是rails的新手,我无法弄清楚为什么我的show def中的方法在我的控制器内部没有被调用。

我正在使用ActiveRestClient从我的REST API中获取数据。我的index.html.erb中的一切工作都很顺利但是当我尝试移动到下一个视图时,我需要进行一个查找呼叫。

def index
  @t_listings = Listing.all
 #@t_listings = Listing.find(3)
  @listings = Listing.all.paginate({:page => params[:page], :per_page => 10})
end

'all'GET请求工作正常,注释掉'find'也可以。但是,当我尝试为节目做同样的事情时,它无法正常工作。

def show
  @listing = Listing.find(params[:id])
 #@listing = Listing.find(3)
end

页面正在路由,因为我可以在浏览器中(以及终端服务器日志中)看到该页面,但@listing实例变量不包含任何内容(应该如此)。

这是我的控制台显示的内容:

Started GET "/listings/4" for ::1 at 2015-04-20 03:21:54 -0400
Processing by ListingsController#show as HTML
  Parameters: {"id"=>"4"}
  Rendered shared/_topnav.html.erb (0.1ms)
  Rendered listings/show.html.erb within layouts/application (4.3ms)
Completed 200 OK in 57ms (Views: 55.9ms | ActiveRestClient: 0.0ms for 0 calls | ActiveRecord: 0.0ms)

如您所见,没有发送ActiveRestClient GET请求。这是我的路由文件的样子:

resources :listings
get 'listings/:id/delete' => 'listings#delete', :as => :listings_delete

以下是用于显示的link_to:

<% @listings.each do |listing|%>
    <span><%= link_to "#{listing.title} - #{listing.company}", "/listings/#{listing.id}", :target => "_blank" %> - <%= listing.city%>, <%= listing.state%></span>

我的show.html.erb文件几乎完全是空的,但现在是:

<h1>Listings#show</h1>
<p> Find me in app/views/listings/show.html.erb</p>
<%= @listing.id %>

当我运行上述页面时,我收到错误:undefined method id'代表nil:NilClass . This error is on the&lt;%@ listing.id%&gt; line.`

有没有人知道我应该做什么或者为什么会这样?

1 个答案:

答案 0 :(得分:0)

我做了一个语法错误,我不敢相信我错过了。花了6个多小时。结果我有两个show defs。难怪它不起作用。对不起大家的麻烦。谢谢你的帮助。