我创造的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__604570268_42022236' 应用程序/视图/职位/ new.html.erb:5:`_app_views_jobs_new_html_erb___144564004_42034104'
app/views/jobs/_form.html.erb:1:in
以下是代码对于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语句的部分文件需要更改。
我不会认为问题突然出现,没有任何变化。这意味着你的机器正在开发一个大脑。你是否像以前一样在同一台机器上运行它?你有没有安装任何新的宝石,运行“包更新”或类似的东西?在哪里定义了'error_span'方法?此外,您是否有任何形式的源代码控制来检查自上次运行以来发生了哪些变化? – BroiSatse 2014-10-07 21:08:52
我使用github作为VCS,这次我通过运行克隆的存储库进行尝试,但问题仍然存在。但是,我从代码中删除了error_span语句,现在代码运行良好。要回答你的上面的问题,error_span方法是无处定义的,因此它是抛出错误。我不知道在哪里定义error_span方法 – 2014-10-07 21:59:24