这似乎并不是一个宝石,我认为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 %>
现在这只是对我想做的事情的粗略描述。但是,我想查询一些问题。
@fields
变量(参见步骤5)的巧妙方法是什么?panel/pages.html.erb
视图,是否应该只显示文本区域中的所有可编辑字段?应该如何更新这些方面?多个表单内有多个提交按钮?如果有人想要一次编辑多个字段并一次提交所有字段会怎么样?Panel
控制器内部创建多个RESTful操作吗?: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或其他什么。将来,是的,但是,拜托,拜托,请有人在这里给我一些小指示。