Ruby on rails 管理可编辑视图

Ruby on rails 管理可编辑视图,ruby-on-rails,Ruby On Rails,这里似乎没有一个宝石为这,我认为一个CMS是过分的,因为客户只想编辑主页上的欢迎信息 以下是我认为我应该做的: 1) 创建页面模型: rails g model Page name:string 2) 创建字段模型: rails g model Field name:string content:string page_id:integer 3) 创建关系,第h1页:b2字段 4) 创建rake任务以设置属于欢迎页面的消息字段: namespace :seeder do namesp

这里似乎没有一个宝石为这,我认为一个CMS是过分的,因为客户只想编辑主页上的欢迎信息

以下是我认为我应该做的:

1) 创建页面模型:

rails g model Page name:string
2) 创建字段模型:

rails g model Field name:string content:string page_id:integer
3) 创建关系,
第h1页:b2字段

4) 创建rake任务以设置属于欢迎页面的消息字段:

namespace :seeder do
    namespace :initial_seed do
        task pages: :environment do
            p = Page.create(name: "Welcome")
            p.fields.create(name: "welcomemessage", content: "everything goes here. The long rambling welcome!")
        end
    end
end
5)为“静态”页面创建“静态”控制器。家,关于我们的故事等等。

class Static < ApplicationController
    def home
        @fields = Page.where().fields
    end
end
这只是我想做的一个粗略的概述。不过,我想问几个问题

  • 你会这样做吗
  • 我应该如何配置我的路由?用我们正在查看的页面的字段填充
    @fields
    变量(参见步骤5)的聪明方法是什么
  • 如果我有一个
    面板/pages.html.erb
    视图,它是否应该简单地显示文本区域中的所有可编辑字段?它应该如何更新这些领域?多个表单中的多个提交按钮?如果有人想一次编辑多个字段,然后一次提交所有字段,该怎么办
  • 这些表格应该放在哪里?我是否应该像这样在
    面板
    控制器内创建多个RESTful操作

  • 类面板
    一个控制器中的多个restful路由对我来说并不是有组织的,但如果不是管理的话,它可以更容易地通过before_action钩子重定向来锁定面板控制器



    另外,我的一项大工作即将结束,我需要做的就是在一个页面上添加编辑一个字段的功能,我已经完成了,我真的不想弄明白炼金术或其他什么。将来,是的,但是,请,请,请有人在这里给我一些小提示。

    我强烈建议不要建立自己的CMS。它充满了困难,而且你现在似乎遇到了一些困难。你应该去看看像这样的东西。

    我相信你是对的,如果我是用图像、子弹头和其他东西创作的,我会研究炼金术(顺便说一句)。然而,它实际上是一个页面上一个可编辑的文本位。
    <% field = @fields.find {|x| x[:name] == 'welcomemessage' } %>
    <%= field.content %> 
    
    class Panel < ApplicationController
        def pages
            @pages = Page.all
        end
    end
    
    <% @pages.each do |page| %>
        Title: <%= page.name %>
        <% page.fields.each do |field|%>
            Field: <%= field.name %>
    
            <% form_for(field) do |f| %>
                <% f.text_area :content%>
                <% f.submit %>
            <%= end %>
        <% end %>
    <% end %>
    
    class Panel < ApplicationController
        # new and create not present as the pages have to be created manually
        # Enabling the user to create their own pages with their own layouts is a bit insane
        def pages
            @pages = Page.all
        end
        def pages_update
        end
        def pages_destroy
        end
    end