微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何坚持使用REST?

如何解决如何坚持使用REST?

| 我基本上是将一个应用程序做一个超级简单的问题=>答案测试,以尝试了解有关Rails的更多信息。 即: 问题:“您的狗叫什么名字?” 答:“ Doggington” 我有一个带有两个简单属性的Question模型: 问题:字符串 Correct_answer:字符串 我在这里的难题是如何将REST原则应用于此-具体来说,当我检查用户的输入(答案)以查看他是否正确回答了问题时。 我不确定是否应该做一些修改“ show \”方法(或任何其他操作)的操作,以接受发布到其上的答案的值...它看起来就像我应该在我的questions_controller中创建一个方法一样称为\“ verify_answer \”或较长的行。 这破坏了REST。 你怎么看? 谢谢!     

解决方法

        
AnswersController#create
应该接受答案。此控制器是否实际具有相关的Answer模型无关紧要。一个动作永远不能执行两个动作。例如,如果您的
QuestionsController#show
既显示问题,又接受
:put
:post
的问题答案,那么您正在破坏基本的rails设计原理。 请注意,您的路由文件可能看起来像这样:
resources :questions do
  resource :answer
end
这将显示您可以:post到的/ questions / 8 / answer路线,并转到
AnswersController#create
。 我忘记了可以用来生成URL的辅助URL方法的确切名称。类似于question_answer_path(@my_question)。 该路由文件适用于rails3,我认为这是您正在使用的文件,因为在我看来,如果您要启动一个新的应用程序,则没有理由使用其他任何东西:p 如果确实有
Answer
模型(也许您想存储用户的答案并在以后查看它们或汇总它们并提供统计信息等),则应将路由器更改为使用
resources :answer
而不是单一版本。 有关路由的更多信息和一些RESTful技巧,您应该访问Ruby on Rails路由指南,网址为:http://guides.rubyonrails.org/routing.html 我正在疯狂编辑!有时,您可能需要将不是严格REST的其他方法添加到Questions控制器中。这不一定被认为是不好的做法,但是只要确保您仔细查看自己的决定并确定是否实际上不只是隐藏其他资源的存在即可。我不认为这是上述情况之一:)     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。