我一直在尝试使用以下控制器将关注者添加到微博中:
microposts_controller.rb:
def follow
@user = current_user
set_micropost
if @micropost.user_id != current_user.id
@micropost.followed += 1
@micropost.save
end
end
问题是总是存在“缺少参数”错误“微博”。表示我没有将@micropost
传递给控制器。的
<%= link_to 'Follow' uses micropost_new_path(micropost), method: 'follow' %>
所以我不知道我在做什么错。定义了适当的路由(错误指出是microposts#create
错误,我不确定为什么。
答案 0 :(得分:1)
这里有些事情可能不太正确,但第一个突出的问题是您似乎误解了method
的{{1}}选项的用途。在这里,“方法”并不表示您的控制器方法的名称,而是用于请求的 HTTP方法(例如POST,PUT,DELETE等)。可能是此链接无意中调用了link_to
操作而不是create
操作。
要添加其他操作,请查看Adding More RESTful Actions上路由指南中的部分
作为创建添加关注者方法的简短示例:
如果您将微博定义为路线中的资源:
follow
,并希望将一项适用于单个微博的新操作(例如“关注”)更新为:
resources :microposts
然后您可以在resources :microposts do
post 'follow', on: :member
end
中添加一个follow
方法,类似于已经完成的操作。编辑路线后,这还将提供一个microposts_controller.rb
帮助函数,可用于链接到此操作。