管理员可编辑的视图

时间:2014-05-16 00:50:56

标签: ruby-on-rails

这似乎并不是一个宝石,我认为CMS太过分了,因为客户只想在主页上编辑欢迎信息!

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

1)创建页面模型:

rails g model Page name:string

2)创建Field模型:

rails g model Field name:string content:string page_id:integer

3)建立关系,Page h1:b2 Field

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)创建一个静态的'静态' -ish页面的控制器。家,关于我们等...

class Static < ApplicationController
    def home
        @fields = Page.where().fields
    end
end

6)在视图中,填充数据库中的欢迎消息(我将为此创建一个帮助程序):

<% field = @fields.find {|x| x[:name] == 'welcomemessage' } %>
<%= field.content %> 

这样就完成了阅读。现在进入创建,更新和删除:

6)创建一个控制面板控制器:

class Panel < ApplicationController
    def pages
        @pages = Page.all
    end
end

7)在panel/pages.html.erb的视图中显示字段:(我将在此处使用部分内容)

<% @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 %>

现在这只是对我想做的事情的粗略描述。但是,我想查询一些问题。

  1. 这是怎么做到的?
  2. 我应该如何配置路线?使用我们正在查看的页面的字段填充@fields变量(参见步骤5)的巧妙方法是什么?
  3. 如果我有panel/pages.html.erb视图,是否应该只显示文本区域中的所有可编辑字段?应该如何更新这些方面?多个表单内有多个提交按钮?如果有人想要一次编辑多个字段并一次提交所有字段会怎么样?
  4. 这些表格应该放在哪里?我应该在Panel控制器内部创建多个RESTful操作吗?:

  5. 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
    

    一个控制器中的多个静止路由并没有让我觉得有条理,但如果不是管理员,它会更容易用 before_action 挂钩锁定面板控制器以重定向...


    另外,我即将完成一项大工作,我需要做的就是添加在一个页面上编辑一个字段的功能,而我已经完成了,我真的不喜欢这样做。我想要弄清楚alchemy_cms或其他什么。将来,是的,但是,拜托,拜托,请有人在这里给我一些小指示。

1 个答案:

答案 0 :(得分:0)

我强烈建议不要建立自己的CMS。它充满了困难,现在看起来你正在遇到一些困难。您应该查看AlchemyCMS之类的内容。