0

我收到标题中的错误。我不确定如何准确地编写路由、控制器和索引。

我正在尝试在index.html.erb如下所示的视图中创建一个“刷新”按钮:

...
<td><%= link_to 'Refresh', refreshProfile_affinity_path(a), method: :put %></td>
...

它正在使用这条路线routes.rb

  resources :affinities
  put 'affinities/refreshProfile/:id' => 'affinities#refreshProfile'

它正在尝试访问以下方法affinities_controller.erb

...
def refreshProfile
    @affinity = Affinity.find(params[:id])
    new_profile_affinity = User.find(@affinity.user_A_id).profile_affinity_with(User.find(@affinity.user_B_id))

    if @affinity.update_attributes(:integer, new_profile_affinity)
        redirect_to @affinity
    end
end
...

有什么问题?任何帮助是极大的赞赏!

4

1 回答 1

1

您需要在as:路由中添加一个,这是指定辅助方法的前缀的原因,也是您当前收到未定义方法错误的原因,例如

put 'affinities/refreshProfile/:id' => 'affinities#refreshProfile',
  as: 'refreshProfile_affinity'

refreshProfile_affinity_path然后可以工作,或者你可以给它一个更短、更简洁的名称,例如as: 'refreshProfile'然后使用refreshProfile_path.

于 2015-05-11T21:12:03.950 回答