【发布时间】:2014-05-16 23:13:31
【问题描述】:
似乎没有这方面的宝石,我认为 CMS 有点矫枉过正,因为客户只想在主页上编辑欢迎消息!
这是我认为我应该做的:
1) 创建页面模型:
rails g model Page name:string
2) 创建字段模型:
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) 为“静态”页面创建一个“静态”控制器。家,关于我们等...
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 或其他什么。将来,是的,但是,拜托,拜托,请有人在这里给我一些小指点。
【问题讨论】:
标签: ruby-on-rails