Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails @user如何在rails中显示操作_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails @user如何在rails中显示操作

Ruby on rails @user如何在rails中显示操作,ruby-on-rails,ruby,Ruby On Rails,Ruby,在我看到的每个创建或更新操作的示例中,它们都有类似的内容 def create @user = User.new(params) if @user.save redirect_to @user else render 'new' end end 这里的重定向到@user如何显示控制器的操作。谁能给我解释一下吗?这都是秘密 记录-URL将通过使用选项调用URL_生成,该选项将引用该记录的命名URL 因此,的url\u将在您的@user上调用,这将生成用于重定向的u

在我看到的每个创建或更新操作的示例中,它们都有类似的内容

def create
  @user = User.new(params)
  if @user.save
    redirect_to @user
  else
    render 'new'
  end
end
这里的
重定向到@user
如何显示控制器的操作。谁能给我解释一下吗?

这都是秘密

记录-URL将通过使用选项调用URL_生成,该选项将引用该记录的命名URL

因此,的
url\u将在您的
@user
上调用,这将生成用于重定向的url。(
/users/1234
或其他)

顺便说一句,这只是重定向的众多方法之一。

让我们从文档开始

redirect_to post_url(@post)
用于重定向到使用Rails路由助手之一生成的特定URL。就你而言,这意味着你可以写作

redirect_to user_url(@user)
但是,
redirect_to
也接受单个模型实例<代码>重定向到
依赖于在输入不是对象时从输入生成URL

url\u for
,当默认情况下传递模型实例时,将依次计算相应的
GET
操作以查看模型

总之,以下代码:

redirect_to @post
相当于

redirect_to post_url(@post)
然而,就个人而言,我更喜欢明确的版本。即使它稍微长一点,我也注意到从长远来看,它倾向于生成更多可维护的代码。编写完整的路由将允许您在需要调试或重命名路由时轻松搜索代码库。

在Ruby(支持Rails的语言)中,您可以设置
@instance\u variables
来存储该请求的数据。虽然可以在一个变量中存储多种类型的数据,但Rails通常会将
@model
对象分配给它们

@user = User.find 1
#-> @user = <User id: "1", name: "john" .... >
在路径实例中,助手提取对象的
id
;重定向_以推断将请求路由到该用户的
show
路径的功能

redirect\u传递到
接受一个对象,调用该对象的显示操作


这一点之所以重要,是因为要理解Ruby(凭借Rails)的重要性

面向对象编程意味着您应该处理对象(而不是变量)

对于Rails,每个模型都应该是一个对象。每次加载模型或创建模型的新实例时,都应该处理对象而不是数据


因此,允许您将
@objects
传递给
重定向到
等方法只是另一种使Rails更加面向对象的方法。

希望我将其编写得简单或复杂吗?以任何可能让初学者理解的方式。如果需要,可以修改或删除谢谢。。这让我明白了更多我想要的。谢谢你,伙计,非常感谢
user_path(@user)
edit_user_path(@user)