RubyonRails:检索css元素并检查值

RubyonRails:检索css元素并检查值,css,ruby-on-rails,ruby,Css,Ruby On Rails,Ruby,我认为这是一个非常直截了当的问题,所以我将着手: subject.rb def current_step @current_step || steps.first end def steps if @title = 'Baseline' %w[sfmfa phq whoqol_bref positive_negative mses_self pam spsir change_questionnaire prosthesis cognitive co

我认为这是一个非常直截了当的问题,所以我将着手:

subject.rb

def current_step
    @current_step || steps.first
   end

   def steps
      if @title = 'Baseline'
       %w[sfmfa phq whoqol_bref positive_negative mses_self pam spsir change_questionnaire prosthesis cognitive comorbidity pain mspss audit ]
      elsif @title = 'Treatment Completion'
         %w[smfa phq whoqol_bref positive_negative pam spsir ssscq prosthesis pain complications mspss audit ptcs accessing_resources satisfaction ]
      else
         redirect_to @subjects_path 
         flash[:notice] = "Did not find title"
      end

   end
我试图检查我的tc.html.erb网页上Title元素的值(这应该返回'Treatment Completion')。目前,检查不起作用,我每次都以“基线”下定义的步骤结束

我有分页表单的步骤,这些步骤都适用于基线页面,所以现在我尝试传递一组不同的元素作为不同页面的步骤定义

我想我使用了错误的访问器(@title)。我用这个ruby提供的标题是:

<% provide(:title, 'Baseline') %>


如有任何意见,将不胜感激

有几件事是错的。首先,您试图在模型中使用
redirect\u to
。这应该在控制器中使用。其次,
@subjects\u path
不是一个实例变量,它是一个url帮助器,因此前面不应该有一个
@
符号。第三,您正在赋值,而不是比较
if
语句(使用
=
而不是
=

因此,要回答原始问题,您可以通过以下方式修复原始问题:

def steps
  if @title == 'Baseline'
    %w[sfmfa phq whoqol_bref positive_negative mses_self pam spsir change_questionnaire prosthesis cognitive comorbidity pain mspss audit]
  elsif @title == 'Treatment Completion'
    %w[smfa phq whoqol_bref positive_negative pam spsir ssscq prosthesis pain complications mspss audit ptcs accessing_resources satisfaction]
  else
    redirect_to @subjects_path 
    flash[:notice] = "Did not find title"
  end
end

请注意,这只修复了第三个错误。

看起来您正在尝试确定模型中视图的状态。您应该让视图处理视图逻辑,如果您想存储状态,即用户已完成步骤的点,您可以使用数据库中的列来完成。感谢您的响应,这就是问题所在。至于我的else块中的所有内容,我只是将其删除。它实际上只是一个占位符,但感谢您的洞察力。所以,一旦我做了这些更改,我得到了他的新错误:nil:NilClass的未定义方法'first'。我不确定它是从哪里来的,因为如果没有if语句,基线的单个示例就不会出错。有什么想法吗?或者我应该做一个单独的线程?再次感谢。编辑不管怎样,结果证明我的逻辑不起作用。很可能你的
@title
变量不是“基线”或“治疗完成”变量,因此
步骤
返回
零。您应该输入一个
else
,返回
[]
或类似的内容。再次感谢您,这肯定是问题所在。