所以我的一个模型中有2个方法。型号名称为user.rb,类为User。这是我宣布的方法
def follow(user_id)
following_relationships.create(following_id: user_id)
end
def unfollow(user_id)
following_relationships.find_by(following_id: user_id).destroy
end
在我看来,我有一个link_to这样的方法:
= link_to 'Following', unfollow_user_path, remote: true
这是HAML,但这不应该有所作为。当我启动服务器并尝试访问某人的页面时,我收到此错误:
未定义的局部变量或方法`unfollow_user_path'对于#<#:0x00563935a456e0>
这不应该发生,因为我在用户模型中声明了该方法。
任何帮助将不胜感激,谢谢。
答案 0 :(得分:2)
模型中定义的函数对路由有0影响,您需要修改路由和用户控制器才能使其工作。
你需要类似的东西。
#config/routes.rb
resources :users do
member do
post :unfollow
post :follow
end
end
然后为#follow
和#unfollow
添加ControllerActions以从视图中获取数据,并实际调用模型上的函数。
阅读rails路由教程(http://guides.rubyonrails.org/routing.html)以获取更多信息
答案 1 :(得分:0)
Yar在这里。
您在示例中尝试做的是通过ajax请求调用模型的方法,但它不是如何工作的。当您发送AJAX或任何请求时,它首先匹配routes.rb
中定义的路由,并找到要调用的相应控制器方法。所以,你需要做这个步骤
0)在此处阅读MVC和rails或您喜欢的任何其他来源http://guides.rubyonrails.org/getting_started.html
1)创建新的控制器方法,当您关注/取消关注
时应该调用这些方法2)将相应的路线添加到{{1}}文件,如@Doon提到
3)在这个控制器方法中你可以调用你的模型方法