我刚刚进入 Rails,在理解一些我正在阅读的指南似乎认为理所当然的语法元素时遇到了一些麻烦。
今天下午我在做一个小示例项目,并试图重构一些代码。基本上,我想在我的导航栏中包含指向仅管理员控件的链接,这些控件取决于当前正在查看的页面。这是我的原始代码:
class RoomsController < ApplicationController
before_filter :admin_controlls
def new
end
def create
end
def edit
end
def update
end
def index
end
def destroy
end
private
def admin_controlls
@adminControlls = "rooms"
end
end
我的想法是,在我想要创建管理控件的每个控制器中,这段代码基本上是相同的。唯一的区别是我想传递给视图的标志变量@adminControlls 的值。
所以,我尝试了这个:
class ApplicationController < ActionController::Base
protect_from_forgery
include SessionsHelper
def admin_controlls(page)
@adminControlls = page
end
end
并将房间控制器更改为:
class RoomsController < ApplicationController
before_filter admin_controlls "rooms"
def new
end
def create
end
def edit
end
def update
end
def index
end
def destroy
end
end
我认为我的困惑始于 before_filter 以及为什么在那里调用方法需要一个符号。我不知道如何在将字符串作为符号调用时将其传递给方法,并且我所有将 before 过滤器更改为调用方法(如上)的努力都失败了。总的来说,我只是觉得我没有掌握语法的一些微妙之处。如果有人有有用的资源,我将不胜感激。