Ruby on rails 链接到ruby on rails上的另一个视图

Ruby on rails 链接到ruby on rails上的另一个视图,ruby-on-rails,link-to,Ruby On Rails,Link To,我正在尝试使用“链接到”功能将一个视图链接到另一个视图 我调用link_的视图是app/views/instructors/show.html.erb,代码片段如下所示(即,它的倒数第二行) @讲师(id)%> @讲师id),:class=>“btn”%> “btn”%> 我试图链接到的视图是app/views/courses/show_all.html.erb,如下所示: <% @courses.each do |course| %> <tr> &l

我正在尝试使用“链接到”功能将一个视图链接到另一个视图

我调用link_的视图是app/views/instructors/show.html.erb,代码片段如下所示(即,它的倒数第二行)


@讲师(id)%>
@讲师id),:class=>“btn”%>


“btn”%>
我试图链接到的视图是app/views/courses/show_all.html.erb,如下所示:

<% @courses.each do |course| %>
  <tr>
    <td><%= course.course_name %></td>
    <td><%= course.instructor_ID %></td>
    <td><%= link_to 'Show', course %></td>
    <td><%= link_to 'Edit', edit_course_path(course) %></td>
    <td><%= link_to 'Destroy', course, :method => :delete, :data => { :confirm => 'Are you sure?' } %></td>
  </tr>

:delete,:data=>{:confirm=>'你确定吗?}%>
删除上述app/views/courses/show_all.html.erb的路径路径。当我尝试上面的代码时,我得到以下错误:

nil:NilClass的未定义方法“each”

在这一行:

<% @courses.each do |course| %>


你知道我在链接中遗漏了什么吗?

这意味着
@courses
为零。您是否在控制器的
show_all
操作中设置了它?例如

def show_all
  @courses = Course.all
end

另外,在
show
视图中,您将
courses
设置为
courses
对象的集合,但您的“删除课程”链接看起来似乎只想删除一门课程。为什么要使用
delete\u-courses
路径链接到show\u-all视图?

show\u-all
操作中,应该定义一个
@courses
实例变量。这是

@讲师.id)%>

未传递到
show_all.html.erb

实例变量是从控制器的操作传递到相应视图的变量

我想当您显示讲师页面时,您的路线将如下:
/instructors/:id
,因此,在显示讲师控制器的所有操作时,您可能需要类似以下内容:

def show_all
  @courses = Course.where(instructor_ID: params[:id])
  render 'courses/show_all'
end

谢谢,这很有效。请原谅我对该主题缺乏了解,但这是否意味着每个视图都需要一个控制器方法来配合它?在大多数情况下,每个视图都应该有一个控制器方法。通过在控制器操作中使用
render
方法,您可以指定要渲染的另一个视图。或者重定向到另一个页面,例如,请参阅控制器的脚手架删除、更新或创建方法。
def show_all
  @courses = Course.where(instructor_ID: params[:id])
  render 'courses/show_all'
end