使用Rails 5,如何在多个控制器/操作中干燥定义实例变量?

时间:2018-02-27 14:13:00

标签: ruby-on-rails ruby separation-of-concerns

我需要定义相同的实例变量:

@note = Note.new
@notes = current_user.notes.all

在多个控制器中:

UsersController#home
NotesController#create
NotesController#update

哪里可以容纳一个类/功能

def createNoteInstancesVars
  @note = Note.new
  @notes = current_user.notes.all
end

这是控制器问题的预期用途,还是我想到的不同/更好的方式?如果我确实把它放在了一个问题中,那是不是意味着每个控制器都会运行这些查询#action?我想避免这种情况。

2 个答案:

答案 0 :(得分:3)

您可以在ApplicationController

中添加该方法

然后添加NotesController

before_action :create_note_instances_vars, only: [:create, :update]

UsersController

中的逻辑相同

答案 1 :(得分:0)

我认为只关注初始化实例变量并不是一个好主意。





您可以在 ApplicationController 中编写此def并在回调时通过回调调用你需要在任何控制器中使用它。