为什么我的生产环境中缺少semantic_nested_form_for方法?

时间:2013-02-15 20:42:25

标签: ruby-on-rails nested-form-for

我试图切换一个网站,将nested_form gem与formtastic结合使用,我已经使用过了,但是我收到了一个奇怪的错误。一切都在开发中完美无缺,测试通过。此错误仅发生在生产中。

访问使用semantic_nested_form_for的页面会导致以下错误:

ActionView::Template::Error (undefined method `semantic_nested_form_for' for #<#<Class:0x0000000524cca0>:0x00000004e46a70>):
    1: <%= semantic_nested_form_for(@volume) do |f| %>
    2:   <%= f.inputs do %>
    3:     <%= f.input :number, :label => 'Volume #', :input_html => {:style => 'width:100px;', :autofocus => true}, :hint => raw('Choose the volume number.') %>
    4:   <% end %>
  app/views/volumes/_form.html.erb:1:in `_app_views_volumes__form_html_erb__2632693694855646779_43838320'
  app/views/volumes/new.html.erb:3:in `_app_views_volumes_new_html_erb___2327298489284463705_41053660'

gem在我的Gemfile中,似乎安装正确:

[~/application/current]$ bundle show nested_form
/home/deployer/application/shared/bundle/ruby/1.9.1/gems/nested_form-0.3.1

我甚至可以在生产控制台中成功调用semantic_nested_form_for

[~/application/current]$ rails c production
Loading production environment (Rails 3.2.12)
irb(main):001:0> helper.semantic_nested_form_for(Volume.new, url: '/volumes' do |f|
irb(main):002:2* f.inputs
irb(main):003:2> f.actions
irb(main):004:2> end
irb(main):005:1> 

此外,semantic_form_for本身可以正常使用,但nested_form_for(没有semantic_部分)不起作用,这让我认为这与nested_form直接相关。

我不认为erb代码与此问题非常相关,但无论如何它仍然存在:

<%= semantic_nested_form_for(@volume) do |f| %>
  <%= f.inputs do %>
    <%= f.input :number, label: 'Volume #', input_html: {autofocus: true}, hint: 'Choose the volume number.' %>
  <% end %>

  <div id="issues_fields">
    <%= f.semantic_fields_for :issues %>
    <%= f.link_to_add 'Add an Issue', :issues %>
  </div>

  <%= f.actions do %>
    <%= f.action :submit, label: 'Save' %>
  <% end %>
<% end %>

1 个答案:

答案 0 :(得分:2)

嗯,我有点傻眼了。当我部署时,Capistrano重新启动独角兽,在我问这个问题之前,我曾尝试手动重启nginx和独角兽,以便排除这一点。在我问这个问题后,我重新启动了整个生产服务器(我讨厌做)只是为了看,现在它工作正常。

如果有人能告诉我为什么仅仅重新启动独角兽进程是不够的,我会将他们的答案标记为已接受的答案。