自定义休息操作

时间:2012-09-08 18:33:08

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

我正在尝试创建友谊,我创建了一个名为accept的自定义操作。但是我无法达到它。每当我打电话给我时,我都无法找到动作节目。

这是我的route.rb文件

  resources :friendships do
    collection do
      delete 'cancel'
      get 'accept'
    end
  end

我在这里称之为

<%= link_to 'Accept', accept_friendships_path(:friend_id => f) %>

accept_friendships取自rake routes命令。在这里我如何定义我的接受控制器

  #Accept friendships
  def accept
    if @customer.requested_friends.include?(@friend)
      Friendship.accept(@customer, @friend)
      flash[:notice] = "Friendship Accepted"
    else
      flash[:notice] = "No Friendship request"
    end
    redirect_to root_url
  end

这里的错误

Unknown action

The action 'show' could not be found for FriendshipsController

1 个答案:

答案 0 :(得分:1)

也许我错了,但你为什么要“接受”成为一个集合呢?我想你希望它成为会员,因为你传递的是friend_id。如果你把它改成成员并制作路径accept_friendship_path(@friendship) [注意单数形式的友谊],你可能会有更好的运气。除了一个附加参数,你的案例与Ruby on Rails Guides上的例子没有区别,这就是值得尝试的原因