最佳实践 - DRY违规Rails< - > JavaScript的

时间:2012-03-24 16:20:40

标签: javascript ruby-on-rails dry

我为网络项目实施了星级评分系统。

在rails后端计算星数并使用视图渲染。 现在我也通过ajax实现了动态评级。因此,我需要动态更新星级。

为了实现这一目标,我只需复制rails代码并在JavaScript中重新实现它。虽然这个解决方案有效,但我对此并不满意,因为它似乎违反了DRY原则。

这件事的最佳做法是什么?通过JavaScript计算所有星级?

我很高兴能找到解决方案。

3 个答案:

答案 0 :(得分:2)

您可以为计算此评级的操作发出AJAX get请求。在此操作中,您可以查看请求是否为AJAX,然后只返回计算的值,而不是呈现相关视图。

我假设您熟悉使用respond_torequest.xhr?方法渲染JSON,等等。

答案 1 :(得分:1)

如果您已经在进行Ajax调用(“我还通过ajax实现了动态评级”),为什么不在发送响应之前进行计算,并将结果添加到响应中?

答案 2 :(得分:0)

我决定采用以下解决方案:

  • 计算导轨后端的评级(星号满和空的数量)
  • 写一个视图partial以呈现星级评分
  • 在“正常”视图中包含部分
  • 返回部分为rate函数的ajax响应,当前评级由jQuery的响应替换

我认为我可以忽略小部分的小html开销 - 它比返回Json并使用JavaScript格式化它更酷。