我正在读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根据模型的名称自动生成?
答案 0 :(得分:2)
params
是一个传递给所有操作的特殊哈希,无论其类型如何。如果给定的动作没有参数,那么它就是空的。这是您可以将页面/表单/ URL参数中的参数传递到操作中的方法。最常见的参数来源之一是表单中的数据元素。
在authlogic的情况下,它包含用于创建用户会话的用户凭据(用户名,密码)。
查看the parameters section了解详情。