Ruby on rails 制作一个非常简单的CMS
我正在用rails制作一个非常简单的CMS,它只需更改现有页面上的现有文本和图像,其他什么都不做。没有改变布局或任何疯狂的事情 这有点像wordpress。下面是它的工作原理: 如果管理员已登录,则在页面顶部会有一个特殊的栏 允许他们编辑页面的页面。 单击后,它们将转到控制面板,并显示所有可编辑的可视区域。 然后,他们可以在控制面板中编辑页面并保存。 组织这个流程的好方法是什么 我已经开始了,有一件事让我明白,填充页面可编辑区域的所有逻辑都发生在视图中: splash/welcome.html.erb 我可以很好地工作,尽管数据库最初必须使用空区域作为种子 但是,我不喜欢视图中的逻辑,因此如何在应用程序控制器中填充@regions实例变量?还是我现在做的很好 也许将来我希望用户能够创建页面,这意味着我将无法在视图中使用这种逻辑 干燥 看来你最好找个帮手帮忙 在不知道你要做什么的情况下,这只是猜测,但你最好做这样的事情:Ruby on rails 制作一个非常简单的CMS,ruby-on-rails,Ruby On Rails,我正在用rails制作一个非常简单的CMS,它只需更改现有页面上的现有文本和图像,其他什么都不做。没有改变布局或任何疯狂的事情 这有点像wordpress。下面是它的工作原理: 如果管理员已登录,则在页面顶部会有一个特殊的栏 允许他们编辑页面的页面。 单击后,它们将转到控制面板,并显示所有可编辑的可视区域。 然后,他们可以在控制面板中编辑页面并保存。 组织这个流程的好方法是什么 我已经开始了,有一件事让我明白,填充页面可编辑区域的所有逻辑都发生在视图中: splash/welcome.html.
#app/models/region.rb
Class Region < ActiveRecord::Base
scope :title, -> { find_by name: "title" }
scope :welcome_text, -> { find_by name: "welcometext" }
end
#app/controllers/application_controller.rb
Class ApplicationController < ActionController::Base
before_action :set_page
private
def set_page
@page = Page.find_by name: action_name
@regions = @page.text_regions
end
end
#app/views/shared/_regions.html.erb
<h1><%= @regions.title.text %></h1>
<%= @regions.welcome_text %>
#app/views/static/welcome.html.erb
<%= render "shared/regions" %>
希望这能为您提供一些如何实现所需的想法?请参阅文档:所有作用域方法都将返回一个ActiveRecord::Relation对象,这将允许对其调用其他作用域等其他方法。通过返回对象或nil查找\u:尝试使用Region.title.welcome\u text它不起作用。理想情况下,title和welcome\u text应该与上的lambda作用域保持关系page@RichPeckfind_by_nameblah已被弃用,取而代之的是wherename:blah。首先,这就是为什么Rails 4需要弃用的_finders gem,如果您保留它们,Dave,感谢更新!find_by仍然在Rails文档中大量存在--find_by_x已经贬值,是的:
#app/models/region.rb
Class Region < ActiveRecord::Base
scope :title, -> { find_by name: "title" }
scope :welcome_text, -> { find_by name: "welcometext" }
end
#app/controllers/application_controller.rb
Class ApplicationController < ActionController::Base
before_action :set_page
private
def set_page
@page = Page.find_by name: action_name
@regions = @page.text_regions
end
end
#app/views/shared/_regions.html.erb
<h1><%= @regions.title.text %></h1>
<%= @regions.welcome_text %>
#app/views/static/welcome.html.erb
<%= render "shared/regions" %>