RecordNotFound无法找到没有ID的事件

时间:2013-06-09 02:35:03

标签: ruby-on-rails ruby

我在尝试将模型中的id传递给不同的控制器时遇到了很多麻烦。我已经阅读了类似的帖子并尝试了不同的解决方案,但似乎无法将Event id传递给Invitations控制器。

更新

目标是用户在查看他们创建的活动时,会点击邀请链接。此链接需要保存来自其来自的事件的ID,以便邀请可以与该事件相关联。

在我的模特中,我为事件模型,我有'has_many'邀请',而对于邀请模型我有'belongs_to:events'

这是我的代码。

我的Events文件夹中的show.html.erb:

<%= link_to 'Invite guests', invitations_path(:event => @event.id) %>

此链接映射到'邀请#new':

<% provide(:title, 'Invite Guests') %>
<h1>Invite your guests</h1>

   <%= form_for(@invitation) do |f| %>

     <%= render 'shared/error_messages', object: f.object %>

       <%= f.label :name %>
       <%= f.text_field :name, :placeholder => "Name" %> <br>

       <%= f.label :email %>
       <%= f.text_field :email, :placeholder => "Email" %> <br>

    <%= f.submit "Send" %>

InvitationsController:

def index
end

def new
    @invitation = Invitation.new
end

def create
    user = current_user.events.find(params[:event])
    @invitation = user.invitations.build(params[:invitation])

    if @invitation.save
              flash[:success] = "Invitations sent!"
        redirect_to user
    else
        render '/home'
    end
end

我知道如果我更换:

    user = current_user.events.find(params[:event])

使用:

    user = current_user.events.find(1)

路线:

resources :users
resources :sessions, only: [:new, :create, :destroy]
resources :events, only: [:show, :create, :destroy]
resources :invitations, only: [:new, :create]

root to: '/home'

match '/signup',  to: 'users#new'
match '/signin',  to: 'sessions#new'
match '/signout', to: 'sessions#destroy', via: :delete


match '/events', to: 'events#new'
match '/invitations', to: 'invitations#new'

一切正常,但当然,这不合适,因为我正在编写事件ID。我对RoR很新(大约2个月的经验)所以可能有更有效的方法来做到这一点。所以任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

<%= link_to 'Invite guests', invitations_path(:event => @event.id) %>

转到:

def index

不要:

def create

如果你想转到create做:

<%= link_to 'Invite guests', invitations_path(:event => @event.id), method: :post %>