这个参数符号在Rails会话中来自何处

时间:2011-10-25 01:17:33

标签: ruby-on-rails session

我正在读Obie Fernandez的Rails 3 Way。他正在演示使用插件Authlogic,并创建了User和UserSession模型以及UsersController和UserSessionsController。

他没有创建任何观点(但他可能认为存在一些观点)

在UserSessionsController中,他创建了这段代码

class UserSessionsController < ApplicationController 

     def new
        @user_session = UserSession.new
     end

    def create
     @user_session = UserSession.new(params[:user_session]) 
       if @user_session.save
       redirect_to user_path(current_user) 
    else
        render :action => :new 
       end
    end

    def destroy 
      current_user_session.destroy 
      redirect_to new_user_session_path
    end 

    end

我的问题与创建方法有关。当他写作

UserSession.new(params[:user_session]) 

:user_session来自哪里?我强调UserSession.new实例化一个新对象,但是params来自哪里?他们会有什么名字?

它取决于虚构视图中的某些内容吗?或者这些参数是否由Rails根据模型的名称自动生成?

1 个答案:

答案 0 :(得分:2)

params是一个传递给所有操作的特殊哈希,无论其类型如何。如果给定的动作没有参数,那么它就是空的。这是您可以将页面/表单/ URL参数中的参数传递到操作中的方法。最常见的参数来源之一是表单中的数据元素。

在authlogic的情况下,它包含用于创建用户会话的用户凭据(用户名,密码)。

查看the parameters section了解详情。