【发布时间】:2014-12-02 10:10:40
【问题描述】:
我正在使用 Ruby 1.9 在 Rails 4.1 中创建一个工作门户应用程序
应用程序最初运行良好,但意外弹出错误。 views 目录下的 jobs 子目录包含两个文件 new.html.erb 和 _form.html.erb(这是一个部分文件)。在渲染新文件时,部分文件也会从新文件中渲染出来。
但是,应用程序在 Rubymine 中显示以下错误
错误详情: “作业中的 NoMethodError#new”
显示 E:/RailsProject/Old/FinalSubm/jobportal/app/views/jobs/_form.html.erb 其中第 23 行提出:
第 23 行未定义方法 `error_span'
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' %>
模板包含的痕迹:app/views/jobs/new.html.erb
Rails.root: E:/RailsProject/Old/FinalSubm/jobportal
应用程序跟踪 |框架跟踪 |完整跟踪
app/views/jobs/_form.html.erb:23:in block in _app_views_jobs__form_html_erb__604570268_42022236'_app_views_jobs__form_html_erb__604570268_42022236' app/views/jobs/new.html.erb:5:in `_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/Old/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 语句的部分文件需要更改。
【问题讨论】:
-
我不会相信问题突然出现并且什么都没有改变。这意味着你的机器正在开发大脑。您是否在与以前相同的机器上运行它?您是否安装了任何新的 gem,运行
bundle update或类似的东西?error_span方法在哪里定义?另外,您是否有任何形式的源代码控制来检查自上次运行以来发生了什么变化? -
我使用的是github作为VCS,这次我尝试运行克隆的存储库,问题仍然存在。但是,我从代码中删除了 error_span 语句,现在代码运行良好。要回答您的上述问题,error_span 方法未在任何地方定义,因此会引发错误。我不知道在哪里定义 error_span 方法
标签: html ruby-on-rails ruby ruby-on-rails-4 runtime-error