在模型中声明的Ruby on Rails方法不能从link_to访问

时间:2016-10-12 13:46:48

标签: ruby-on-rails ruby-on-rails-4

所以我的一个模型中有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>

这不应该发生,因为我在用户模型中声明了该方法。

任何帮助将不胜感激,谢谢。

2 个答案:

答案 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)在这个控制器方法中你可以调用你的模型方法