2014-09-30 71 views
0

誰能告訴我,爲什麼我得到下面的錯誤?::的ActionView ::模板出錯(字符串隱式轉換爲整數)

這是我states_controller.rb

def index 
    @states = State.all 
end 

而且在index.html.erb:

17 <form> 
18 <select onchange="location = this.options[this.selectedIndex].value;"> 
19  <option>Select State…</option> 
20 <% @states.each do |state| %> 
21  <option value="<%= state.id %>"> 
22  <%= nytimes_state_name(state.name) %></option> 
23 <% end %> 
24 </select> 
25 </form> 

,當我在本地運行,但是一旦部署到Heroku上也能正常工作,我得到以下錯誤:

ActionView::Template::Error (no implicit conversion of String into Integer)

當我重新

46 <% @states.first(25).each do |state| %> 
47 <li><%= link_to state.name.downcase + nytimes_state_abbrev(state.name), state %></li>> 
48 <% end %> 

然後我得到了同樣的錯誤:移動nytimes_state_name方法,直到遇到下一個塊運行良好。

再次,當我刪除nytimes_state_abbrev方法時,它可以正常工作,直到它碰到下一個代碼塊,它也調用state.name,並期望它是一個字符串。 (該name值郵政編碼abbreviations- CA,​​,TXNY,等等。)

+0

你確定你使用的本地和在Heroku一樣的寶石版本?嘗試使用bundler在本地運行,即'bundle exec rails server'。 – dpassage 2014-09-30 15:49:39

+0

它仍然罰款在本地運行,但你沒有提醒我,我不得不修改的寶石,以避免一個實例變量的碰撞與我的'states'模型​​。我如何部署修改後的寶石? – 2014-09-30 15:52:39

+0

這是一個完全不同的問題。 :)簡短的回答或者直接嵌入源在Rails應用(http://stackoverflow.com/questions/6800074/custom-ruby-gem-in-gemfile-on-heroku),或叉Github上的寶石和在你的'Gemfile'中引用fork。基本上,把它放在Heroku可以看到的地方。 – dpassage 2014-09-30 16:01:11

回答

0

最基本的答案,爲什麼OP向他的本地構建和在Heroku是因爲他做了修改,看到不同的行爲到他正在使用的寶石之一,並且這些修改在部署時沒有被推動。

的解決方案是嵌入寶石的來源直接在Rails應用程序,如在this question,或叉在Github寶石並引用在Gemfile叉。聽起來像他選擇了前者,現在在他的本地構建和Heroku之間有一致的行爲。