在视图中复制动态页面

时间:2014-08-27 13:38:32

标签: ruby-on-rails dynamic

我对Rails的了解非常基础,但是我必须解决Rails项目中的问题并且无法访问程序员。所以我自己试图解决它,但我被卡住了。

该项目围绕用户能够将图片添加到比赛中,并能够对这些图片进行投票。计划是必须在与图像相同的页面上进行投票,但这会给JS带来一些错误并且性能会降低。所以我想在两个不同的页面上进行投票和概述。

问题在于我无法弄清楚如何在视图中创建另一个页面>竞赛文件夹并将其与项目的其余部分联系起来。对我来说最简单的解决方案是复制show.html.haml并将其粘贴为votepage.html.haml,但显然不是那么容易。

视图中的

> competitions文件夹中有一个index.html.haml文件,它显示当前比赛的列表,并使管理员能够删除,添加或编辑某些比赛。当用户点击竞争链接时,会在show.html.haml中呈现。在此页面上显示了在该比赛中上传的所有图像。在该页面上,我想要一个引用投票部分的链接。当用户点击该链接时,它应该转到votepage.html.haml(与show.html.haml相同,但具有不同的样式并添加了javascript)。目前没有必要实际进行投票工作,通过前端“伪装”就足够了。

TLDR:我想在视图中复制/粘贴页面,但我不知道如何将其连接到项目中。

UPDATE1。我使用了控制台命令rails generate controller competitions votepage,它为我创建了一个投票页面。我也可以在http://localhost:3000/competitions/votepage

上访问这个

使用以下代码

- @competitions.each do |competition|
  #container.js-masonry
    .painting.item
      = link_to competition do
        - competition.pictures.shuffle.each do |picture|
          = image_tag(picture.image_url)

我可以在页面中插入比赛中的图像。但问题是我从所有比赛中获得图像。而不是竞赛/ 1,比赛/ 2等。

2 个答案:

答案 0 :(得分:1)

您缺少的是更新路径文件,以便Rails知道您想要的内容

查看:

competitions/
  show.html.haml
  vote.html.haml
  ...

路线:

resources :competitions do
  get :vote, on: :member
end

会员使其表现得像展示动作,需要像竞赛/:id /投票

这样的格式

编辑:

You want to do the routes like above, but in the controller, make sure you get the competition from the id that will get passed

控制器:

def vote
  @competition = Competition.find(params[:id])
end

然后,您可以直接取消循环并参考@competition

,而不是循环播放所有比赛

答案 1 :(得分:0)

基本答案是你还需要从app / controllers / competitions复制show方法,并使用同一文件中的内容制作一个votepage方法。

本指南将帮助解释视图如何(通过控制器)连接到模型:http://guides.rubyonrails.org/action_controller_overview.html