Rails,更新邀请系统的记录

时间:2017-05-15 02:49:21

标签: ruby-on-rails model invite

我想允许用户接受邀请,接受标签位于邀请模型本身(所以我需要更新表)。到目前为止,当用户单击“接受”按钮

时,不会发生任何事情

查看

 <% @invites.where(user_id: current_user.id).find_each do |invite| %>
...
 <%= button_to "Accept", accept_invite_invites_path(invite), method: :put %>
 end

路线

  resources :invites do
    collection do
      get 'accept_invite'
    end
  end

控制器

def accept_invite

  @invite = Invite.find(params[:id])
  @invite.accept
end

def decline_invite
  @invite = Invite.find(params[:id])
  @invite.decline
end

    def set_invites
      @invite = @story.invites.find(params[:id])
    end

 def new
    @invite = @story.invites.new
 end

我得到&#34;未定义的方法`邀请&#39;为零:NilClass&#34;如果我保留:更新作为set_invites的一部分,删除更新允许我的代码运行,但不会对数据库进行任何更改。

模型

   def accept
    accept = true
    save

  end

  def decline
    accept = false
    save

  end

控制台

Processing by InvitesController#update as 
  Parameters: {"authenticity_token"=>"BDle9fqXHT9ZFctMbO4RvxfPuTQXe2Nq+b6/T29B3xjpYdtMozVUFLiRlaQFtuYzMrBceTQn8OtfGjJTe4wa/Q==", "id"=>"accept_invite"}
  User Load (1.7ms)  SELECT  `users`.* FROM `users` WHERE `users`.`id` = 2 ORDER BY `users`.`id` ASC LIMIT 1
No template found for InvitesController#update, rendering head :no_content
Completed 204 No Content in 85ms (ActiveRecord: 1.7ms)

这很奇怪,因为数据库是从用户表中选择而不是更新邀请表

那么问题是什么?路线有问题吗?我的set_invites方法?

1 个答案:

答案 0 :(得分:1)

  

那么问题是什么?路线有问题吗?我的set_invites方法?

是的,您的 路线有问题 。我可以看到您在 集合 上宣布了自己的路线,但您需要在 成员 上进行宣传。此外,您应将其更改为put

resources :invites do
  member do
    put 'accept_invite'
  end
end