Ruby on rails 链接到ruby on rails上的另一个视图
我正在尝试使用“链接到”功能将一个视图链接到另一个视图 我调用link_的视图是app/views/instructors/show.html.erb,代码片段如下所示(即,它的倒数第二行)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
@讲师(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