Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 制作一个非常简单的CMS_Ruby On Rails - Fatal编程技术网

Ruby on rails 制作一个非常简单的CMS

Ruby on rails 制作一个非常简单的CMS,ruby-on-rails,Ruby On Rails,我正在用rails制作一个非常简单的CMS,它只需更改现有页面上的现有文本和图像,其他什么都不做。没有改变布局或任何疯狂的事情 这有点像wordpress。下面是它的工作原理: 如果管理员已登录,则在页面顶部会有一个特殊的栏 允许他们编辑页面的页面。 单击后,它们将转到控制面板,并显示所有可编辑的可视区域。 然后,他们可以在控制面板中编辑页面并保存。 组织这个流程的好方法是什么 我已经开始了,有一件事让我明白,填充页面可编辑区域的所有逻辑都发生在视图中: splash/welcome.html.

我正在用rails制作一个非常简单的CMS,它只需更改现有页面上的现有文本和图像,其他什么都不做。没有改变布局或任何疯狂的事情

这有点像wordpress。下面是它的工作原理:

如果管理员已登录,则在页面顶部会有一个特殊的栏 允许他们编辑页面的页面。 单击后,它们将转到控制面板,并显示所有可编辑的可视区域。 然后,他们可以在控制面板中编辑页面并保存。 组织这个流程的好方法是什么

我已经开始了,有一件事让我明白,填充页面可编辑区域的所有逻辑都发生在视图中:

splash/welcome.html.erb

我可以很好地工作,尽管数据库最初必须使用空区域作为种子

但是,我不喜欢视图中的逻辑,因此如何在应用程序控制器中填充@regions实例变量?还是我现在做的很好

也许将来我希望用户能够创建页面,这意味着我将无法在视图中使用这种逻辑

干燥

看来你最好找个帮手帮忙

在不知道你要做什么的情况下,这只是猜测,但你最好做这样的事情:

#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" %>