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