初学者:如何在Ruby on Rails中存储数据?

时间:2014-08-16 04:23:45

标签: javascript ruby-on-rails ruby ajax

我有一个rails 4应用程序,我想在某种形式的文档或数据库中存储问题和答案,然后在特定的网页上显示它们并让用户回答这些问题。

例如:我会有一个名为/ questions的网页,会有一个问题,例如"你喜欢数学还是科学" - >如果用户选择数学作为答案,那么与他们选择科学相比,他们会引发一个不同的问题。

问题:如何在我的rails应用程序中存储问题或任何数据,如果需要,我可以在我的视图中显示它们?

4 个答案:

答案 0 :(得分:3)

好的 - 你真的需要专注于在这里询问具体问题。人们得到报酬以提供自以为是的答案(顾问) - SO主要是为了提供有关具体问题的具体信息

尽管如此,我会帮助你,因为我猜你是新人:


<强>洛尔

保存数据是Rails最基本的功能之一 - 它是一个MVC (model view controller) framework,这意味着它可以接受任何输入(从你的视图),在你的控制器中配置它,最后将其保存在您的模型中(到您的数据库):

enter image description here

Rails是最高效,最简单的产品之一。用于创建,存储和扩展的可扩展平台关联数据;并设计围绕功能

-

<强> MVC

要开始使用Rails,您需要考虑几件事情。

首先,您需要了解Rails是基于 Ruby 构建的,这使得它成为object orientated。这意味着您使用Rails执行的所有操作都必须围绕对象进行旋转,包括从路由到controller操作的所有操作

这很重要,因为很多新手都不了解Rails的OOP功能,因此创建了脱节的应用程序流程。破碎。 right 创建基于Rails的应用程序的方法是将对象放在流的中心,这将在第二个中显而易见

-

其次,由于Rails是一个MVC框架,它处理请求的方式与“普通”应用程序有些不同。它通过收集您的请求,将其发送到您的路线和&amp;然后处理控制器操作。然后,此操作允许您从模型构建数据,然后您可以在视图中显示

您可以在此处阅读Rails的优秀初学者资源:

  

<强>问题

关于您的问题,以下是您需要做的事情:

#config/routes.rb
root to: "questions#index"
resources :question do #-> domain.com/questions
   resources :answers
end

这是你需要的

#app/models/question.rb
Class Question < ActiveRecord::Base
   has_many :answers
end

#app/models/answer.rb
Class Answer < ActiveRecord::Base
   belongs_to :question
end

#app/controllers/questions_controller.rb
Class QuestionsController < ApplicationController
   def index
      @questions = Question.all
   end

   def new
      @question = Question.new
   end

   def create
      @question = Question.new(question_params)
      redirect_to @question if @question.save
   end

   def show
      @question = Question.find params[:id]
   end

   private

   def question_params
       params.require(:question).permit(:your, :question, :attributes)
   end
end

#app/views/questions/index.html.erb
<% @questions.each do |question| %>
   <%= link_to question.title, question %>
<% end %>

#app/views/questions/new.html.erb
<%= form_for @question do |f| %>
    <%= f.text_field :title %>
    <%= f.submit %>
<% end %>

-

<强>流量

这将使您能够访问路线domain.com/questions/new以创建新问题,如果需要,您可以添加一些nested功能以适应这些问题的答案

我强烈建议首先考虑一下你想要达到的目标,而不是你将如何去做。这将使您清楚地了解如何创建结构,从而使其更容易实现

答案 1 :(得分:2)

创建Rails应用程序时,它创建了一个config / database.yml文件。该文件告诉Rails存储数据的位置。默认情况下,它将数据存储在sqlite数据库中。这是学习如何使用Rails的一个很好的选择。

Rails使用数据库迁移来创建数据库的结构。

我能想到让你入门的最简单方法就是使用脚手架。脚手架创建Rails模型,数据库迁移以及您需要开始的所有视图和控制器。在命令行上,运行:

bin/rails generate scaffold Question question:string category:string

将显示其创建的所有文件的列表,这些文件值得研究。

现在生成文件,运行:

bin/rake db:migrate

这将迁移您的数据库。数据库迁移将向您的数据库添加一个问题表,其中包含两个字符串列,问题和类别以及一些特定于Rails的列。您可以在db / schema.rb中看到它创建的表的结构。

迁移数据库后,您将能够使用以下命令运行rails服务器:

bin/rails server

服务器运行后,您可以在浏览器中以localhost:3000 / questions查看问题列表。当然,您从没有问题开始,但脚手架添加了代码,可以让您添加,编辑和删除问题。

接下来的步骤有很多很好的教程,例如将答案与问题联系起来。

答案 2 :(得分:0)

您应该查看Ruby on Rails指南。它们是学习如何创建Rails应用程序的绝佳资源

http://edgeguides.rubyonrails.org/

答案 3 :(得分:0)

我对rails也很陌生,并且发现花了一些时间来真正了解MVC框架以及它如何工作真的有助于向前迈出一步并以我需要的方式应用。上面列出的导轨指南很棒。它真的帮助我将MVC分解为三个方面,并在将它们放在一起之前理解它们是如何单独工作的。有一些非常好的项目有截屏视频,这有助于将其付诸实践。我特别喜欢基础轨道和odin项目。