0

我在下面的第二行(第二個before_action)得到了一個SyntaxError。如何將第一個before_action產生的變量(@organization)傳遞給第二個before_actionSyntaxError:如何將參數傳遞給before_action?


在我的控制器我之前的行動呼籲有以下兩種:

before_action :find_organization 
before_action :rights?(@organization) 

find_organization 
    @organization = Organization.find_by(id: params[:id]) 
    if @organization == nil 
    render json: { errors: "Organization not found" }, status: :bad_request 
    end 
end 

第二before_action位於我的基本控制器:

private 
def rights?(organization) 
    unless rights(organization) == "full" #Uses a helper method 
    render json: {errors: "You do not have the right" }, status: :unauthorized 
    end 
end 

回答

2

您可以用塊指定before_action ,像這樣:

before_action do 
    find_organization 
    rights?(@organization) 
end 

如果您認爲此方法適用,您可以致電find_organization或致電rights?

+0

謝謝!如果你想添加'only:[:show]'?因爲如果我在'do ... end'中添加這個,我又會得到一個語法錯誤。 – Nick

+0

然後使用'before_action only:[:show] do' – Omnigazer

+1

更簡單地說,您可以在第一個方法中設置一個實例變量,然後在第二個方法中使用該變量(如果存在)。 –