未知操作:无法为PostsController找到操作'rsvp'

时间:2018-04-14 08:25:21

标签: ruby-on-rails ruby

所以我收到了标题中所述的错误。我必须在Postscontroller中编写什么代码来解决这个问题?我不确定我在这里要做什么,我是否必须在我的帖子控制器中定义rsvp?如果是这样的话我将如何去做呢?

class RsvpController < ApplicationController
 def create
    rsvp = current_user.rsvps.build({post_id: params[:id]})
    if rsvp.save 
    end
 end

end

Show.html.erb

<p>
  <strong>Date:</strong>
  <%= @post.date %>
</p>
<p>where:<%=@post.longitude %>, <%=@post.latitude%></p>

<p>
    <strong>Name:</strong>
    <%= @post.name %>
</p>

<p>
  <strong>User_id:</strong>
  <%= @post.user_id %>
</p>


<p>
  <strong>Description:</strong>
  <%= @post.description %>
</p>

<% if current_user == @post.user %>
 <%= link_to 'Edit', edit_post_path(@post) %> |
<%end%>
 <%= link_to 'Back', posts_path %>

<%= button_to "Rsvp now", rsvp_post_path(@post), class: "btn btn-primary" %>

的routes.rb

Rails.application.routes.draw do
  mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
  resources :posts
  devise_for :users
  root 'home#index'
  get 'home/ruby_meetup'

  resources :posts do
  post 'rsvp', on: :member
  end

此外,我想要它,以便显示已经为该事件进行过搜索的人员列表。我该怎么做呢?我会感激一些帮助,因为我还在学习rails,这是我的第一个项目。

1 个答案:

答案 0 :(得分:0)

通过以下行,您可以定义路线:

resources :posts do
  post 'rsvp', on: :member
end

通过这条线,你要求这条路线:

要处理请求,您需要一个控制器操作rsvp,实际上是错误状态。 因此,只需定义操作(方法)并处理请求:

class RsvpController < ApplicationController
  def create
    rsvp = current_user.rsvps.build({post_id: params[:id]})
    if rsvp.save 
    end
  end

  def rsvp
    # process the request here...
  end
end