gpt4 book ai didi

ruby-on-rails - 单击链接不会触发操作

转载 作者:太空宇宙 更新时间:2023-11-03 18:10:23 24 4
gpt4 key购买 nike

我是 ruby​​ on rails 的初学者。我正在构建一个用于在 Rails 上练习 ruby​​ 的电影评论应用程序。在该应用程序中,我正在为电影添加投票功能(赞成票和反对票)。

电影#index

<%= link_to "Add movie", new_movie_path %>
<% @movies.each do |movie| %>
<%= image_tag movie.thumbnail.url(:medium) %>
<%= link_to movie.title, movie_path(movie) %>
<%= link_to "upvote", {controller: "votes", action: "upvote"} %>
<%= link_to "downvote",{controller:"votes", action: "downvote"} %>
<% end %>

投票 Controller

class MoviesController < ApplicationController
def upvote
Movie.find(params[:id]).vote.upvote += 1
redirect_to movies_path
end

def downvote
Movie.find(params[:id]).vote.downvote += 1
redirect_to movies_path
end
end

路线.rb

Rails.application.routes.draw do    
resources :movies
resources :votes
root 'movies#index'
end

当我点击链接 upvotedownvote(movies#index) 时,upvote 和 downvote Action 没有触发。这是抛出错误

No route matches {:action=>"upvote", :controller=>"votes"}

最佳答案

您的“votes_controller.rb”已经定义了 MoviesController。是打错了吗?

您还需要定义自定义资源路由。参见 http://guides.rubyonrails.org/routing.html了解更多关于 rails 中的路由

我还建议您创建一个投票模型使用

resources :votes

投票模型将有:编号:整数类型:字符串movie_id: 整数

在 View 中:

link_to 'Upvote', vote_path(movie_id: movie.id, type: 'up'), method: post
link_to 'Downvote', vote_path(movie_id: 42, type: 'down'), method: post

我可能误会了自动生成的路径方法;要从您的应用程序中查看所有可用路由,请打开一个终端,导航到您的 Rails 根文件夹并运行: rake 路

所有内容都在上面的链接中解释

关于ruby-on-rails - 单击链接不会触发操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35323281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com