gpt4 book ai didi

ruby-on-rails-3 - Rails 3 如何向 Controller 添加自定义方法

转载 作者:行者123 更新时间:2023-12-04 07:01:12 25 4
gpt4 key购买 nike

我正在使用 http://guides.rubyonrails.org/getting_started.html作为帮助我创建自己的应用程序的示例。我很好地创建了博客和评论模块。当我向评论或博客 Controller 添加方法时,我无法获得 link_to 操作来调用新函数。一切都指向 routes.rb 中的问题,但我已经尝试了所有我见过的新语法,但没有任何效果。

我想要做的是在 Controller 中创建一个简单的执行方法来运行 ruby​​ 脚本并将输出保存到数据库。一切都按照教程进行,但是当我尝试使用名为 execute 的自定义函数扩展评论 Controller 时,我无法运行它。

comments_controller.rb  #Same as destroy 
def execute
@post = Post.find(params[:post_id])
@comment = @post.comments.find(params[:id])
@comment.destroy
redirect_to post_path(@post)
end

_comment.html.erb
<%= link_to 'Execute Comment', [comment.post, comment],
:method => :execute %>

routes.rb
resources :posts do
resources :comments do
get :execute, :on => :member
end
end

rake routes |grep execute
execute_post_comment GET /posts/:post_id/comments/:id/execute(.:format) {:action=>"execute", :controller=>"comments"}

Error when I click Execute comment link:
No route matches "/posts/3/comments/6"

最佳答案

运行 rake routes 并查看是否有任何路由指向您的 Controller 操作。如果没有,您需要创建一个作为“成员操作”或使用匹配规则。

如果您确实看到了路由,您可以通过将 :as => route_name 参数传递给路由规则来命名它。这样做将为您的 link_to 启用 route_name_path() 和 route_name_url() 助手

RailsCasts 对 Rails 3 路由语法有一个很好的快速概述 here

编辑:

根据代码示例,试试这个:

<%= link_to 'Execute Comment', execute_post_comment_path(comment.post, comment) %>

根据文档 here :method 选项只能包含有效的 http 动词(get、put、post、delete)。 link_to 助手无法通过自定义成员操作弄清楚你想点击哪个操作,因此你必须使用上面的命名路由。

HTH

关于ruby-on-rails-3 - Rails 3 如何向 Controller 添加自定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4447596/

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