我对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等。
答案 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