Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.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/5/ruby/20.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/7/user-interface/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 在RubyonRails中创建问题_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 在RubyonRails中创建问题

Ruby on rails 在RubyonRails中创建问题,ruby-on-rails,ruby,Ruby On Rails,Ruby,我一直遵循本指南制作Ruby on Rails web应用程序: 这应该是一个人们回答问题的测验 我已经把问题变成了一种资源。然而,该指南在其网站上提到了一个页面,以便能够创建和删除其资源文章。显然,这对问答题没有任何意义,因为我只想创建一次,然后再也不能创建或删除。但是,指南中没有提到这一点?如果您不想通过controller创建/更新/销毁您的问题,您可以使用:除了,排除这些restful路由,或者使用:仅指定您需要的路由,这一点更明显() 这将创建以下路由: GET /questions

我一直遵循本指南制作Ruby on Rails web应用程序:

这应该是一个人们回答问题的测验


我已经把问题变成了一种资源。然而,该指南在其网站上提到了一个页面,以便能够创建和删除其资源文章。显然,这对问答题没有任何意义,因为我只想创建一次,然后再也不能创建或删除。但是,指南中没有提到这一点?

如果您不想通过controller创建/更新/销毁您的问题,您可以使用
:除了
,排除这些restful路由,或者使用
:仅
指定您需要的路由,这一点更明显()

这将创建以下路由:

GET /questions      questions#index
GET /questions/:id  questions#show

要用问题填充数据库,请使用seeds()。将您的问题创建相关代码放入
db/seeds.rb
文件,然后运行
rake db:seed

您应该在路由中指定只显示
:显示问题

在您的路线中执行以下操作:


resources:questions,only:[:show]
据我所知,您希望自己创建资源和数据,但不希望其他用户能够创建或删除资源,对吗

让我们从基础开始:

在MVC中,模型/资源是实体的主要表示形式。 routes文件首先指示哪些路由可用 对于可以向其发送HTML请求的每个实体。它还将路由与相应的控制器操作相匹配。控制器 为用户提供与您的应用程序交互的网关 他们的请求,采取所需的行动(发出SQL命令以创建、显示、从数据库中删除等),并在最后给出适当的响应

因此,假设您希望用户在服务器上创建新资源。首先,您提供一条他们可以发送请求的路由。然后,在视图中给他们一个createnewresource按钮,他们可以通过该按钮进行交互。该按钮将使用路由,将其与控制器操作匹配,并向该控制器方法发送请求。根据控制器操作中的内容,控制器随后创建资源并使用302重定向用户,并发出通知

现在,假设您不希望请求通过。你会怎么做? 首先,您不会创建可以发送请求的路由。您也不会创建可接收请求的控制器操作

这就是您的场景中的用例

由于您不希望用户能够向服务器发送创建资源的请求:

  • 不要为他们提供发送任何此类HTML请求的路由
  • 不要提供任何将接收此类请求的控制器
  • 显然,不要在视图中提供任何按钮来执行该操作
  • 现在的问题是:那么我将如何创建资源

    您有三种选择:

  • 使用种子文件:可以使用种子文件添加所需的所有数据。本教程和网络上的许多其他资源可以帮助您

  • 使用rails控制台:给出create命令:Question.create(:name=>“hello”,:description=>“您好!”)。请参见此处的链接:

  • 如果您是初学者,在尝试此操作之前,您需要做更多的工作:创建授权用户以及他们可以采取的操作。您还可以创建管理仪表板,并使用activeadmin gem向管理用户提供所有操作。 本博客解释了这一过程:

  • 最后,由于您确实需要显示所有问题:仅创建show route,将其与控制器操作相匹配,在控制器操作中编写方法,该方法发出SQL命令以从数据库获取所有资源,并为相应的show view提供它可以呈现的数据


    希望它能帮到你

    我不能完全理解你的问题,但我会尽力以最好的方式回答。如果您正在创建一个问题资源,我相信您可能希望添加更多的问题,甚至删除一个或多个错误的问题,或者出于某种原因,您需要在将来更改它。创建和删除操作用于创建RESTful资源,但是如果您确实不想在资源中包含delete,您也可以选择这样做。
    GET /questions      questions#index
    GET /questions/:id  questions#show