在rails中显示表单数据的最佳方法是什么?

时间:2014-01-10 07:32:36

标签: ruby-on-rails output simple-form formtastic

我对Rails很新。

我正在寻找最常见的“轨道式”方式来显示表单数据的输出。我知道Simple form和Formtastic是以用户友好的方式编写简洁代码和显示输入字段的好选择。但是,我正在寻找稍微不同的东西,我想从这些表单中显示数据作为输出,我想以类似和简洁的方式进行。在过去几天我一直在找不到任何东西,所以我想我应该问Stack Overflow。

你通常做什么:  

  • 编写自定义帮助程序,以便能够编写简洁的代码并显示输出数据?
  •  
  • 使用Simpleform / Formtastic,禁用字段,并将css修改为    让它看起来你想要的方式?
  •  
  • 有没有一个共同的宝石这样做?或者也许是我没想过的另一种方式。
  • 首先,感谢最初的回应。我想我应该澄清一下我的问题。由于答案没有达到标准。我已经在控制器中有一个show方法,以及它的视图模板。目前,我使用form_for在表单中单独显示每个字段大约12个字段。请参阅下面的示例代码段:

      <%= form_for(@event) do |f| %>
         <div class="row-fluid">
          <div class="span6">
           <%= render 'shared/error_messages' %>
    
             <%= f.label :title %>
             <%= f.text_field :title, :disabled => true %>
    
             <%= f.label :start_date %>
             <%= f.date_field :start_date, :disabled => true %>
          </div>
         </div>
       <% end %>
    

    我想也许更好的问题是,它们是否相当于为用户显示数据的form_for方法,而不是编辑它而只是为了阅读它?看起来它们似乎是一个标准我没有发现的方法。

    2 个答案:

    答案 0 :(得分:0)

    构建表单的最简单方法是使用rails g scaffold Example name:string这将为名为Example的Model生成Model,Views,Controller和必要的数据库迁移,并使用Name属性作为字符串。

    然后,您将使用html和css为视图设置样式。

    导轨指南here上有大量有用的信息。

    答案 1 :(得分:0)

    虽然这个问题很模糊,但你必须明白这个功能正是 Rails的构建方式(提交数据并能够在其他地方显示/操作它)


    数据

    MVC应用程序中的数据受一个非常重要的因素约束 - 数据库

    如果您通过表单提交数据,那么您的目标是将其存储在数据库中,并将其显示在其他视图/控制器方法中

    因此,对您的答案的直截了当的问题是遵守MVC processes,并将您的数据保存到中央存储库(数据库或其他),稍后您可以调用:

    enter image description here


    查看

    要将数据导入数据存储,首先需要提交

    MVC的view部分是您可以显示UI的地方,也是您放置表单的地方。有一个关于如何设计这个here的完整教程,但为了演示,这里有一个如何使用表单的例子:

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

    <强>控制器

    您输入到视图中的数据将在保存

    时发送到您的控制器

    数据通过HTML POST方法发送,由Rails作为params[]哈希读取。此哈希包含HTML表单中的所有已发送项目,可以像这样使用:

    #app/controllers/posts_controller.rb
    def new
        @post = Post.new
    end 
    
    def create 
        @post = Post.new(post_params)
        @post.save
    end
    
    private
    def post_params
        params.require(:post).permit(:title, :body)
    end
    

    <强>模型

    新创建的.save对象上的Post方法,基本上告诉您的模型将数据放入数据库(或其他数据存储),然后您可以稍后提取(使用{{ 1}}方法或类似方法)

    .find

    重要的是要注意您的模型不存储您的数据,他们只是提供一个接口(如果您愿意,API)将数据保存到某种数据存储(即数据库)

    模型非常重要,因为它们允许您构建和关联您的数据,创建真正深度和部署的能力强大的应用程序