以下是我编辑的详细信息:
我有我的控制器,
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 %><br />
<%= f.text_field :section %>
</div>
<%= f.submit %>
<% end %>
当我单击索引页面以创建新链接时,索引页面显示错误,如
Enr / rds / surv_rdsap_xrefs #index
中的NoMethodErrornil的未定义方法`errors':NilClass
感谢支持,请建议我纠正错误。我是ROR的新手。感谢
答案 0 :(得分:2)
您的错误显示index
模板的呈现导致错误,这意味着您正在为索引模板中的新调查(上面的代码段)呈现表单。这很好,但是如果您要这样做,则必须在index
以及new
中实例化新的调查。
最简单的方法是,您只需将new
中的代码复制到index
:
def index
@enr_rds_surv_rdsap_xrefs = Enr::Rds::SurvRdsapXref.paginate(page: params[:page])
@enr_rds_surv_rdsap_xref = Enr::Rds::SurvRdsapXref.new
end
def new
@enr_rds_surv_rdsap_xref = Enr::Rds::SurvRdsapXref.new
end
为了使您的代码稍微干一点,您可能会更改创建新实例的位置。您经常会看到的模式类似于:
before_filter :build_record, :only => [:new, :index]
protected
def build_record
@survey = YourSurvey.new
end
这样,如果你没有任何其他逻辑,你甚至不需要编写新的/索引方法。
答案 1 :(得分:0)
您是否还在控制器的新操作中设置了@survey
?该错误意味着当呈现视图时@survey
为nil,因此设置该实例变量时一定存在问题。
当您转到“新”视图或尝试提交表单(创建)时,是否收到错误?
答案 2 :(得分:0)
The form contains <%= pluralize@enr_rds_surv_rdsap_xref.errors.count, "error") %>
这行代码就是问题所在。你在复数和@enr之间缺少“(”......
解释:RoR认为对象是:pluralize @ enr ...而不是@ All,而且他对这种对象没有错误。