gpt4 book ai didi

ruby-on-rails - 我不明白这个? (Rails 上的 ruby )

转载 作者:太空宇宙 更新时间:2023-11-03 17:45:37 25 4
gpt4 key购买 nike

我是 RoR 的新手,我在理解某些代码时遇到了一些困难。我尝试查找它,但结果对我没有帮助。

这是位于用户 Controller 中的代码。 (如果你需要任何其他代码,评论它,我会更新

class UsersController < ApplicationController
def new
@user = User.new
end

def create
@user = User.new(user_params) #I didn't see any parameters in the constructor
if @user.save #Checks if @user was saved?
session[:user_id] = @user.id #Creates a session? What's :user_id and @user_id?
redirect_to'/' #Redirects to http://localhost:8000/
else
redirect_to '/signup' #If all fails go back to signup page
end
end

private
def user_params
params.require(:user).permit(:first_name, :last_name, :email, :password)
end
end

这是编程类(class)的一部分,未能向我正确解释。我通常知道这是一个注册表单,但我在理解 create 和 user_params 函数过程时遇到了问题。

当我寻求帮助时,我是在请求您引导我完成正在发生的事情。我还需要具体帮助params.require(:user).permit(:first_name, :last_name, :email, :password)

最佳答案

@user = User.new(user_params) #I didn't see any parameters in the constructor

user_params是方法的名称。在ruby中,不用写()就可以调用一个方法在方法名称之后。如果您向下看您发布的代码底部,您可以看到方法定义:

private
def user_params
params.require(:user).permit(:first_name, :last_name, :email, :password)
end
end

该方法返回一些东西,并且该返回值在构造函数中使用。您可以通过在代码中添加以下内容来查看返回值:

def create
@user = User.new(user_params)
puts '******'
p user_params
puts '******'
...
...
end

然后在您的服务器窗口中查看输出。您会看到如下内容:

****** 
{“first_name"=>”Joe”, “last_name”=>”Smith”, “email”=>”joe_smith@yahoo.com”}
*******

params.require与安全有关。该主题称为 strong parameters ,您可以在这里阅读:

https://www.sitepoint.com/rails-4-quick-look-strong-parameters/

if @user.save #Checks if @user was saved?

是的:

By default, save always run validations. If any of them fail the action is cancelled and save returns false.

session[:user_id] = @user.id #Creates a session? What's :user_id and @user_id?

session 用于使变量从一个请求持续到另一个请求。 session 就像一个哈希,:user_id只是您在哈希中创建的随 secret 钥。您可以随意命名 key ,但它应该描述您正在保存的数据。

@user.id是您保存在 session 哈希中的值。 id来自您在此处创建的用户:

@user = User.new(user_params)

I'm generally aware that this is for a signup form, but I am having trouble comprehending the create and user_params function processes.

首先,您使用 GET 请求来显示用于创建新用户的表单——您可以通过输入 localhost:3000/users/new 来完成此操作在您的浏览器中。这将显示表格。 <form>标签有一个 action属性,它指定表单将发送请求和数据的 url。

如果您使用浏览器的开发者工具,您可以点击类似 Page Source 的内容。查看表单的原始 html,它看起来像这样:

<form class="new_user" id="new_user" action="/users" accept-charset="UTF-8" method="post">
...
...

发送到 url /users 的 POST 请求被路由到 create UsersController 中的操作。那是因为当你声明一条路线时:

resources :users

resources :photos

Rails 使用 the chart below将 url 路由到操作(在这种情况下,url 被路由到 PhotosController 中的操作):

enter image description here

注意 url /photos被路由到 indexcreate行动。 Rails 检查请求是 GET 请求还是 POST 请求,以确定要执行的操作。

有关更多信息,请查看 Rails Guide on routing .

关于ruby-on-rails - 我不明白这个? (Rails 上的 ruby ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38423970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com