这是我的编辑细节:
我有我的控制器,
class Enr::Rds::SurvRdsapXrefsController < Enr::Controller
def index
@enr_rds_surv_rdsap_xrefs = Enr::Rds::SurvRdsapXref.paginate(page: params[:page])
end
def show
end
def new
@enr_rds_surv_rdsap_xref = Enr::Rds::SurvRdsapXref.new
end
def edit
@enr_rds_surv_rdsap_xref = Enr::Rds::SurvRdsapXref.find(params[:id])
end
def create
@enr_rds_surv_rdsap_xref = Enr::Rds::SurvRdsapXref.new(params[:enr_rds_surv_rdsap_xref])
respond_to do |format|
if @enr_rds_surv_rdsap_xref.save
format.html { redirect_to :enr_rds_surv_rdsap_xrefs, notice: "Survey link was successfully created." }
format.js
format.json { render json: @enr_rds_surv_rdsap_xref, status: :created, location: @enr_rds_surv_rdsap_xref }
else
format.html { render action: "new" }
format.js
format.json { render json: @enr_rds_surv_rdsap_xref.errors, status: :unprocessable_entity }
end
end
end
def update
end
def destroy
end
end
这是我的观点形式
<%= form_for(@enr_rds_surv_rdsap_xref, :remote => true) do |f| %>
<% if @enr_rds_surv_rdsap_xref.errors.any? %>
<div id="error_explanation">
<div class="validate">
The form contains <%= pluralize@enr_rds_surv_rdsap_xref.errors.count, "error") %>.
</div>
<ul>
<% @enr_rds_surv_rdsap_xref.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="control-group">
<%= f.label :section %>
<%= f.text_field :section %>
</div>
<%= f.submit %>
<% end %>
当我单击索引页面来创建新链接时,索引页面显示错误就像
Enr / rds / surv_rdsap_xrefs #index中的NoMethodError
nil的未定义方法`errors':NilClass
感谢支持,请建议我纠正错误 . 我是ROR的新手 . 谢谢
3 回答
您的错误显示
index
模板的呈现导致错误,这意味着您将要执行此操作,您必须在index
以及new
中实例化新的调查 .最简单的,你可以将
new
中的代码复制到index
:为了使代码稍微干一些,您可能会更改创建新实例的位置 . 您经常会看到的模式类似于:
这样,如果您没有任何其他逻辑,甚至不需要编写新的/索引方法 .
您是否还在控制器的新操作中设置了
@survey
?该错误意味着当呈现视图时@survey
为nil,因此设置该实例变量时必定存在问题 .当您转到“新”视图或尝试提交表单(创建)时,是否收到错误?
这行代码就是问题所在 . 你在复数和@enr之间缺少“(”)...
解释:RoR认为对象是:pluralize @ enr ...而不是单独的@ All,并且他对这种对象没有错误 .