html - 用于 nil:NilClass 的未定义方法
问题描述
我正在尝试从另一个控制器的页面显示新的表单页面,我使用的是嵌套资源。
我收到此错误
undefined method `sublet_posts' for nil:NilClass
学生模型
class Student < ApplicationRecord
has_many :sublet_posts, :dependent => :destroy
end
Sublet_post 模型
class SubletPost < ApplicationRecord
belongs_to :student
end
路由.rb
resources :students do
resources :sublet_posts
end
学生展示视图
<p id="notice"><%= notice %></p>
...
...
...
<h3>Sublet Post</h3>
<% @student.sublet_posts.each do |sublet_post| %>
<%= sublet_post.description %>
<%= link_to "Edit", edit_student_sublet_post_path(@student, sublet_post) %>
<% end %>
<h3>Add Sublet Post</h3>
<%= link_to "Add", new_student_sublet_post_path(@student)%>
Sublet_Post 控制器
class SubletPostsController < ApplicationController
before_action :set_sublet_post, only: [:edit, :update, :destroy]
# POST /sublet_posts
# POST /sublet_posts.json
def create
@student = Student.find(params[:student_id])
@sublet_post = @student.create(sublet_post_params)
@sublet_post.student_id = current_member_id
redirect_to student_path(@student)
end
# PATCH/PUT /sublet_posts/1
# PATCH/PUT /sublet_posts/1.json
def update
@student = Student.find(params[:student_id])
@sublet_post = @student.sublet_posts.update(sublet_post_params)
redirect_to student_path(@student)
end
private
# Use callbacks to share common setup or constraints between actions.
def set_sublet_post
@sublet_post = SubletPost.find(params[:id])
end
# Only allow a list of trusted parameters through.
def sublet_post_params
params.require(:sublet_post).permit(......)
end
end
转租帖子表单视图
<%= form_for [@student, @student.sublet_posts.build] do |form| %>. <----------------- Error
<% if sublet_post.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(sublet_post.errors.count, "error") %> prohibited this sublet_post from being saved:</h2>
<ul>
<% sublet_post.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
任何帮助将不胜感激。我认为不需要学生控制器,因此我将其省略了。
解决方案
推荐阅读
- c# - .NET Web Core 5 API - 如何从我的 Linux 服务器使用 Kafka 消息?
- django - Rest API 调用返回被禁止
- c# - 导致deadlineExceeded的Grpc期限和时区
- c# - Mock.Verify 使用列表的当前值,而不是调用正在验证的方法时的列表值
- c++ - 使用概念或 SFINAE 检查类是否具有带有 std::array 参数的模板化成员函数
- python - TypeError:不能将序列乘以“str”类型的非整数 [转换数据类型]
- neuraxle - 如何最好地处理 Neuraxle 管道中的错误和/或丢失数据?
- mongodb - pymongo:不能使用存储在 Redis 中的恢复令牌
- vector - LibGDX:如何通过触摸移动?
- c++ - 文件已加载,但未显示纹理