在这种情况下,代码重用是否可行?

时间:2013-10-06 04:49:43

标签: ruby-on-rails ruby code-reuse reusability

我有一个Index页面,它只显示current_user的数据,我创建了另一个页面,它显示了与索引页面相同的数据字段和格式,但是对于current_user却没有,但在查询了其他一些列之后,在这种情况下是它可以重用索引代码并使用控制器中的某些条件来传递每种情况下不同的对象变量吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

你打赌 - @user = params[:user_id] ? User.find( params[:user_id] ) : current_user

答案 1 :(得分:1)

假设控制器是FoosController,current_user的索引页面的动作是#bar,那么你的控制器可能看起来像这样

class FoosController < ApplicationController
  def bar
    @user = current_user
  end

要重复使用该模板,您可以创建一个单独的部分模板app/views/foos/_index.html.erb

然后,在app/views/foos/bar.html.erb

<%= render partial: '_index', locals: { user: @user }

要在其他操作中重用部分模板,您只需要在另一个模板中调用partial,使用不同的实例变量为其提供。