2014-10-07 52 views
1

我创造的Rails 4.1使用Ruby 1.9未定义的方法`error_span” - 的Rails项目

应用程序最初运行良好工作门户应用,却不料一个错误弹出。 views目录中的jobs子目录包含两个文件new.html.erb和_form.html.erb(这是部分文件)。在渲染新文件时,部分文件也会从新文件中渲染。

但是,应用程序显示的RubyMine以下错误

错误详细信息: “NoMethodError在乔布斯#新的”

显示E:/ RailsProject /老/ FinalSubm/jobportal /应用/视图/作业/ _form.html.erb其中行#23提出:

未定义的方法`error_span”在行23

20 <div class="controls"> 
    21  <%= f.text_field :title, :class => 'form-control' %> 
    22 </div> 
    23 <%= error_span(@job[:title]) %> 
    24 </div> 
    25 <div class="control-group"> 
    26 <%= f.label :description, :class => 'control-label' %> 

跟踪模板包含的:应用程序/视图/职位/ new.html.erb

Rails.root:E:/ RailsProject /老/ FinalSubm/jobportal

应用程序跟踪|框架跟踪|全面跟踪
应用程序/视图/职位/ _form.html.erb:23:在block in _app_views_jobs__form_html_erb__604570268_42022236'
app/views/jobs/_form.html.erb:1:in
_app_views_jobs__form_html_erb__604570268_42022236' 应用程序/视图/职位/ new.html.erb:5:`_app_views_jobs_new_html_erb___144564004_42034104'

以下是代码对于E写:/RailsProject/Old/FinalSubm/jobportal/app/views/jobs/_form.html.erb

<%= form_for @job, :html => { :class => "form-horizontal job" } do |f| %> 

    <% if @job.errors.any? %> 
    <div id="error_expl" class="panel panel-danger"> 
     <div class="panel-heading"> 
     <h3 class="panel-title"><%= pluralize(@job.errors.count, "error") %> prohibited this job from being saved:</h3> 
     </div> 
     <div class="panel-body"> 
     <ul> 
     <% @job.errors.full_messages.each do |msg| %> 
      <li><%= msg %></li> 
     <% end %> 
     </ul> 
     </div> 
    </div> 
    <% end %> 

    <div class="control-group"> 
    <%= f.label :title, :class => 'control-label' %> 
    <div class="controls"> 
     <%= f.text_field :title, :class => 'form-control' %> 
    </div> 
    <%= error_span(@job[:title]) %> 
    </div> 
    <div class="control-group"> 
    <%= f.label :description, :class => 'control-label' %> 
    <div class="controls"> 
     <%= f.text_area :description, :class => 'form-control' %> 
    </div> 
    <%= error_span(@job[:description]) %> 
    </div> 
    <div class="control-group"> 
    <%= f.label :tag1, :class => 'control-label' %> 
    <div class="controls"> 
     <%= f.select :tag1, options_for_select(%w[Internship Full-Time Part-Time Co-Op Contractor]) %> 
    </div> 
    <%= error_span(@job[:tag1]) %> 
    </div> 
    <div class="control-group"> 
    <%= f.label :tag2, :class => 'control-label' %> 
    <div class="controls"> 
     <%= f.select :tag2, options_for_select(%w[Work-From-Home Office]) %> 
    </div> 
    <%= error_span(@job[:tag2]) %> 
    </div> 
    <div class="control-group"> 
    <%= f.label :tag3, :class => 'control-label' %> 
    <div class="controls"> 
     <%= f.select :tag3, options_for_select(%w[US-Citizen Non-US-Citizen]) %> 
    </div> 
    <%= error_span(@job[:tag3]) %> 
    </div> 
    <div class="control-group"> 
    <%= f.label :category, :class => 'control-label' %> 
    <div class="controls"> 
     <%= f.select :category_name, Category.all.collect{ |c| [c.name, c.id]} %> 
    </div> 
    <%= error_span(@job[:category_name]) %> 
    </div> 
    <div class="control-group"> 
    <%= f.label :deadline, :class => 'control-label' %> 
    <div class="controls"> 
     <%= f.date_select :deadline, :class => 'form-control' %> 
    </div> 
    <%= error_span(@job[:deadline]) %> 
    </div> 
<!-- <div class="control-group"> 
    <%= f.label :employer_id, :class => 'control-label' %> 
    <div class="controls"> 
     <%= f.number_field :employer_id, :class => 'form-control' %> 
    </div> 
    <%= error_span(@job[:employer_id]) %> 
    </div> 
    <%= f.hidden_field :employer_id %> 
    <%= f.submit nil, :class => 'btn btn-primary' %> 
    <%= link_to t('.cancel', :default => t("helpers.links.cancel")), 
      jobs_path, :class => 'btn btn-default' %> 

<% end %> 

以下是针对E编写的代码:/ RailsProject /老/ FinalSubm/jobportal /app/views/jobs/new.html.erb

<%- model_class = Job -%> 
<div class="page-header"> 
    <h1><%=t '.title', :default => [:'helpers.titles.new', 'New %{model}'], :model => model_class.model_name.human.titleize %></h1> 
</div> 
<%= render :partial => 'form' %> 

该程序运行良好,几天后,除了重新启动rails服务器之外,代码自此未做任何更改。我试图找出这个错误从哪里弹出。为了解决这个错误,我应该在Jobs#new controller?中定义方法error_span。应该写什么?或者我应该从视图中删除error_span语句,但这意味着需要在代码中进行很多更改,因为我有8到10个文件,其中提及html语句的部分文件需要更改。

+0

我不会认为问题突然出现,没有任何变化。这意味着你的机器正在开发一个大脑。你是否像以前一样在同一台机器上运行它?你有没有安装任何新的宝石,运行“包更新”或类似的东西?在哪里定义了'error_span'方法?此外,您是否有任何形式的源代码控制来检查自上次运行以来发生了哪些变化? – BroiSatse 2014-10-07 21:08:52

+0

我使用github作为VCS,这次我通过运行克隆的存储库进行尝试,但问题仍然存在。但是,我从代码中删除了error_span语句,现在代码运行良好。要回答你的上面的问题,error_span方法是无处定义的,因此它是抛出错误。我不知道在哪里定义error_span方法 – 2014-10-07 21:59:24

回答

6

如果您使用twitter-bootstrap-rails(这是我猜测error_span方法来自哪里)。

尝试通过把你的Gemfile使用最新的代码:

gem 'twitter-bootstrap-rails', :git => 'https://github.com/seyhunak/twitter-bootstrap-rails.git', :branch => 'master' 

,因为它看起来在几个星期前,如他们解决了这个方法。

更多信息:https://github.com/seyhunak/twitter-bootstrap-rails/pull/795

+0

是的,我正在使用** twitter-bootstrap-rails **。我修改了gem文件,关闭服务器,运行** bundle update **,然后再次启动服务器,但仍然存在相同的错误“没有定义方法error_span'” – 2014-10-08 04:56:22

3

twitter-bootstrap-rails在LIB /发电机/引导/主题/模板/

<%%= error_span(@<%= resource_name %>[:<%= column.name %>]) %> 

变化

错误
<%%= f.error_span(:<%= column.name %>) %> 

.erb & &苗条templete有同样的错误。 here is a fixed version

+1

twitter-bootstrap-rails 3.2.2 has这个bug,如上所述。 – NoelProf 2016-04-26 03:33:35

+0

这给我修好了。 'error_span(@post [:content])'改为'f.error_span(:content)' – 2016-11-25 02:38:21

1

基于@ NoelProf的回答,我改变了我的Gemfile:

gem 'twitter-bootstrap-rails', '>= 3.2.0', '< 3.2.2' 

这不会安装的版本3.2.2。

我重新启动服务器,并且error_span问题已消失。

+0

记得在安装'twitter-bootstrap-rails' gem后重新启动服务器。 – 2017-03-09 02:53:01

相关问题