rails 练习6 --让使用者可以投票
来源:互联网 发布:linux返回根目录命令 编辑:程序博客网 时间:2024/05/22 14:04
目标
我们要做一个按钮,可以让使用者点击后增加该文章(topic)的投票数(vote)
步骤
步骤1:新增一个controller的action,称之为upvote
编辑app/controllers/topics_controller.rb这个档案,以及将这个底下的mehtod设定放在档案里private这行上面:
def upvote @topic = Topic.find(params[:id]) @topic.votes.create redirect_to topics_pathend
- @topic = Topic.find(params[:id])从数据库中寻找某笔topic的数据,并将它设定成@topic这个变数的值
- @topic.votes.create将该topic新增一笔vote并存入数据库
- redirect_to(topics_path)告诉浏览器回到topics_path这个位置(所有文章的页面)
步骤2:帮upvote这个action设定一个新路径(new route)
打开config/routes.rb这个档案,并找到下面这行程序:
resources:topics
将这行程序改成如下:
resources :topics do member do post 'upvote' endend
可以使用输入rake routes或是前往http://localhost:3000/rails/info来确认upvote是否已加入到route设定里面,你应该会看到下面这行的内容:
步骤3:在View上面新增一个按钮
编辑app/views/topics/index.html.erb,加入二行代码
<% @topics.each do |topic| %> <tr> <td><%= topic.title %></td> <td><%= topic.description %></td>+ <td><%= pluralize(topic.votes.count, "vote") %></td>+ <td><%= button_to '+1', upvote_topic_path(topic), method: :post %></td> <td><%= link_to 'Show', topic %></td> <td><%= link_to 'Edit', edit_topic_path(topic) %></td> <td><%= link_to 'Destroy', topic, method: :delete, data: { confirm: 'Are you sure?' } %></td> </tr><% end %>
- pluralize(topic.votes.count,“vote”)可以藉由判断前面变数的数量来显示单数的“vote”或是复数的“votes”
- button_to ‘+1’建立一个html按钮,内文是’+1`
- upvote_topic_path(topic)建立一个合适的连接来指向我们想要的action位置,以此例来说,我们希望增加『被点击+1』的那篇topic
- upvote_topic_path(topic)如果该topic.id是42,则会显示/topics/42/upvote这个网址
- method::post确保我们是使用CRUD中的Create(建立)的动作,而不是Read(读取)
步骤4:在浏览器上实际操作
前往http://localhost:3000/topics玩玩看
有没有发现,上述的设定不需要重开Rails server,开心吗?
0 0
- rails 练习6 --让使用者可以投票
- rails 练习4 --对文章做投票
- Rails中的使用者验证:Devise
- 39 练习:投票系统
- 组合练习之投票
- Spring让Hibernate使用者受益良多
- Spring让Hibernate使用者受益良多
- Spring让Hibernate使用者受益良多
- Spring让Hibernate使用者受益良多[转载]
- Spring让Hibernate使用者受益良多
- 让SOA使用者像超人一样自由
- Spring让Hibernate使用者受益良多
- rails 练习01
- [php学习五]AJAX练习2-投票
- php 数据访问练习:投票页面
- 6条可以让习惯成自然的方法
- 6条可以让习惯成自然的方法
- 投票
- ecshop二次开发--放大镜
- 手把手教你搞懂麦克风的技术指标
- intent.setAction的介绍
- 机器学习笔记2——分类
- 百度登录加密协议分析(下)
- rails 练习6 --让使用者可以投票
- 数据结构练习题及答案
- ListView异步加载图片方法和滚动优化
- python中的字符串格式函数str.format()
- 如何提高浮点数变整数的精度
- ecshop二次开发--前台秒杀
- HTM层级实时记忆开发平台Nupic安装方法(pYTHON VERSION)
- 第3节--PyDev配置
- eclipse如何使用git从远程仓库clone项目?