管理员面板不在轨道上的ruby中工作

时间:2014-08-20 14:58:43

标签: ruby-on-rails

目前我正在学习铁路,所以我很抱歉我的知识不足,可能是一个愚蠢的问题。 :)

我在名为pages的控制器中创建了一个简单的索引页面。       在index.html.erb里面,我有一个表单,用户可以在其中注册存储在@newsletter中的新闻稿,我还有一个名为@title的变量,其中页面的标题存储在数据库中。

我想创建一个仅供网站所有者使用的管理面板,他可以访问并显示所有新闻简报,我也希望所有者可以更改标题。

如果我创建另一个控制器,我可以实现吗? 您建议什么,为管理员和页面保留相同的控制器或为管理区域创建新的控制器?

另外,还有一个问题,我什么时候需要创建模型?每当我在数据库中需要一个新表时,不是吗? 我应该为每个控制器设置一个模型,或者我可以拥有更多模型和一个控制器?

2 个答案:

答案 0 :(得分:1)

页面和简报之间是否有任何联系?

如果时事通讯与网页没有关系,那么您可以将时事通讯表格部分放置并将其呈现在您想要的位置。

这可能是您的数据库架构:

'Page.rb'模型,其中包含您需要的字段:title:string,slug:string(我更喜欢friendly_id),body:text ...

'NewsletterEmail.rb'模型,包含您需要的字段:email_address:string,name:string(可选),subscription_status:boolean(跟踪取消订阅)...

每个型号都需要一个控制器供您跟踪管理。

对于前端,您必须设置类似'match:“/:slug”=>的路线“public#page”',你可以像@page = Page.friendly.find(:slug)一样抓住你的页面,然后分配@title变量@title = @ page.title。

希望这会对你有所帮助。

答案 1 :(得分:0)

对于您的管理员控制器pages_controller.rb和newsletter_emails_controller.rb,您可以使用before_action:check_admin_rights并在application_controller.rb中定义

def check_admin_rights authenticate_or_request_with_http_basic('管理')做|用户名,密码| 用户名==' admin' &安培;&安培;密码=='密码' 结束 端