0

我正在尝试创建一个可以记录用户正确答案并显示它们的应用程序。我如何在会话中访问它并显示它。我将计数设置为全局变量,这可能是错误的开始。

我的应用程序询问一个随机问题,如果用户单击正确答案,它会重新加载包含新问题的页面。如果不正确,它会将他们定向到新页面。我将如何显示正确的答案计数?

我的用户和会话设置类似于 michael hartl 的 ruby​​ on rails 教程。

controller.rb

    @@ruby_functs_count = 0

    def ruby_functs
    @symbols = { 
  "abort" => "Terminates program. If an exception is raised (i.e., $! isn't nil), its error message is displayed.",
  "Array( obj)" => "Returns obj after converting it to an array using to_ary or to_a."
 }
@random = []
@random2 = []
  rando = @symbols.sort_by {rand}
  rando = rando.each { |k,v|  @random << k and @random2 << v}
  @sym = @random2[0]
  @answer = @random[0]
  @sym2 = @random[0..10].sort_by {rand}
end

sessions_controller.rb

    class SessionsController < ApplicationController

def sign_in(user)
    cookies.permanent[:remember_token] = user.remember_token
    self.current_user = user
end

def new
end

def create
    user = User.find_by_email(params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
        sign_in user
        redirect_to user
    else
        render 'new'
    end
end

ruby_functs.html.erb

    <% for @random in @sym2 
     if @random == @answer
        x = cards_ruby_functs_path %>
        <li class="btn btn-small btn-info flash"><%= link_to "#{@random}", x %></li>
        <% else 
            x = cards_wrong_path %>

            <li class="btn btn-small btn-info flash"><%= link_to "#{@random}", x %></li>
 <% end %>
  <% end %>
4

1 回答 1

0

pfhahf,我不知道从哪里开始......

是的,使用类变量@@ruby_functs_count来存储状态是个坏主意。这不是一个全局变量,看起来像$ruby_functs_count(使用全局变量更糟)。

你可以做的开始:

使用 ID

当您知道答案的 id 时,您可以轻松地将其存储并比较结果:

# application_controller
Question = Struct.new(:q, :a)
QUESTIONS = { 
  1 => Question.new("abort", "Terminates..."),
  2 => Question.new("Array( obj)", "Returns..."),
}

此示例使用结构来表示数据并将其存储在一个常量中,以便它可读且易于访问,例如:

question = QUESTIONS[1]
question.q # => "about"
question.a # => "Terminates..."

然后,您可以在某些会话字段中跟踪用户交互:

session[:answered] ||= [] # init the session key if it's empty
session[:answered] << params[:question_id] # store the id so that you can work on it

我希望这可以帮助您进一步使用您的代码。

于 2013-02-17T11:18:57.067 回答