Ruby块将作用域更改为特定变量

Ruby块将作用域更改为特定变量,ruby,Ruby,我是ruby的新手,但我觉得这段代码可以改进 class LoginPage < BasePage def initialize(session) @session = session end def login(params) @session.within '#login-form' do @session.fill_in 'Login', with: params[:logi

我是ruby的新手,但我觉得这段代码可以改进

    class LoginPage < BasePage
       def initialize(session)
         @session = session
       end

       def login(params)
         @session.within '#login-form' do
           @session.fill_in 'Login', with: params[:login]
           @session.fill_in 'Password',with: params[:password]
         end
       @session.click_button 'Login'
       end
     end

但是这个代码不起作用。您知道如何更改这些方法调用的范围以使它们调用特定的实例变量吗。

您可以使用
instance\u eval
执行此操作

@session.instance_eval do  
  within '#login-form' do 
    fill_in 'Login', with: params[:login] 
    fill_in 'Password', with params[:password] 
  end 
  click_buttton 'Login' 
end 
然而,我认为这会使您的代码读起来很混乱,因为在扫描代码时,很容易错过
实例评估

@session.instance_eval do  
  within '#login-form' do 
    fill_in 'Login', with: params[:login] 
    fill_in 'Password', with params[:password] 
  end 
  click_buttton 'Login' 
end