我有一些用户类型,例如学生,教师,管理员。对于每个用户类型,我有一个控制器。例如,学生控制器放在app/controllers/students
目录中。但大多数控制器是相同的。因此,我在app/controllers/core
中创建了核心控制器。
应用/控制器/核心/ settings_controller.rb
class Core::SettingsController < ApplicationController
def show
# instance variables, redirections etc. placed here...
#
end
# other actions...
#
end
应用/控制器/学生/ settings_controller.rb
class Student::SettingsController < Core::SettingsController
end
的routes.rb
namespace :student do
# ...
resource :schedule, :only => [:show]
resource :settings, :only => [:show, :update]
end
namespace :admin do
# ...
resource :settings, :only => [:show, :update]
end
我将<%= link_to "<", schedule_path(:date => @date.prev_month)" %>
添加到views/core/settings/_month_nav.html.erb
文件时启动了问题。
除了写下丑陋的代码之外,还有其他解决办法吗?
<% if admin? %>
<%= link_to "<", admin_schedule_path ... %>
<% elsif student? %>
<%= link_to "<", student_schedule_path ... %>
...
答案 0 :(得分:2)
您可以执行类似
的操作<%= link_to "<", self.send("#{current_user.class.to_s.downcase}_schedule_path",:date => @date.prev_month) %>
我使用current_user
因为我不确定你是如何设置它的,因为你的视图代码不是很清楚。