1

プロジェクトをherokuにアップロードしましたが、次のエラーが発生します:NoMethodError in Items#hype_itemおよびundefined method "link" for nil:NilClass。localhostを使用すると、コンピューターで機能します。

私はこれを行いました:

  1. heroku run rake db:create
  2. herouk run rake db:migrate
  3. herokuの再起動

...そしてこの問題に関する多くの投稿を読んでください、しかしそれはそれを解決しません。

助言がありますか?

これがログです

2012-12-14T11:54:02+00:00 app[web.1]: Processing by ItemsController#hype_item as HTML
2012-12-14T11:54:03+00:00 app[web.1]:   Rendered items/hype_item.html.erb within layouts/application (75.2ms)
2012-12-14T11:54:03+00:00 app[web.1]: Completed 500 Internal Server Error in 405ms
2012-12-14T11:54:03+00:00 app[web.1]: 
2012-12-14T11:54:03+00:00 app[web.1]: ActionView::Template::Error (undefined method `link' for nil:NilClass):
2012-12-14T11:54:03+00:00 app[web.1]:     6:        <p><div id="abc"><%= raw @item.link %></div></p>
2012-12-14T11:54:03+00:00 app[web.1]:     8: </div>
2012-12-14T11:54:03+00:00 app[web.1]:     3: 
2012-12-14T11:54:03+00:00 app[web.1]:   app/views/items/hype_item.html.erb:6:in `_app_views_items_hype_item_html_erb___686068816707788662_29579640'
2012-12-14T11:54:03+00:00 app[web.1]: 
2012-12-14T11:54:03+00:00 app[web.1]:     4: <div class="modal hide" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="tr">
2012-12-14T11:54:03+00:00 app[web.1]:     5:    <div class="modal-body">
2012-12-14T11:54:03+00:00 app[web.1]:     7:    </div>
2012-12-14T11:54:03+00:00 app[web.1]: 
2012-12-14T11:54:03+00:00 app[web.1]:   Rendered vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.6/lib/action_dispatch/middleware/templates/rescues/_trace.erb (18.7ms)
2012-12-14T11:54:03+00:00 heroku[router]: at=info method=GET path=/ host=enigmatic-tor-2280.herokuapp.com fwd=84.48.62.139 dyno=web.1 queue=0 wait=0ms connect=16ms service=773ms status=500 bytes=26039
2012-12-14T11:54:03+00:00 app[web.1]:   Rendered vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.6/lib/action_dispatch/middleware/templates/rescues/template_error.erb within rescues/layout (29.9ms)
2012-12-14T11:54:03+00:00 app[web.1]:   Rendered vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.6/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.0ms)

...そしてgemfile

source 'https://rubygems.org'

gem 'rails', '3.2.6'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem "less-rails", "~> 2.2.6"
gem 'therubyracer'
gem 'bcrypt-ruby', :require => 'bcrypt'


group :assets do
  gem 'sass-rails',   '~> 3.2.3' #mulig denne må flyttes ut av asset group for å virke
  gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
  gem 'twitter-bootstrap-rails'
end

group :production do
  gem 'pg'
end
group :development, :test do
  gem 'sqlite3'
end

gem 'thin'
gem 'jquery-rails'

hype_item.html.erb

<div id="counter"></div>
<div id="play_button"> <a id="play" role="button"><%= image_tag("Play.png")%></a></div>

<div class="modal hide" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="tr">
    <div class="modal-body">
        <p><div id="abc"><%= raw @item.link %></div></p>
    </div>
</div>

さらにいくつかのファイルを表示する必要があるかどうか教えてください。何が関連しているかわかりません。

4

1 に答える 1

0

ボールドリックが指摘したように、問題は@itemがゼロだったということでした。

だから私は(hype_item.html.erbのこれで)から変更しました:

<p><div id="abc"><%= raw @item.link %></div></p>

に:

<p><div id="abc"><% if @item %> <%= raw @item.link %> <% end %></div></p>

これは最善の解決策ではないかもしれませんが、うまくいきました。

より良い解決策を自由に与えてください、多分これはコントローラーで行うことができます。

すべてのフィードバックをありがとう!

于 2012-12-19T12:31:47.793 に答える