2014-04-07 106 views
2

我目前正在嘗試使用RoR製作一個網球網站。該網站有一個後端,目前在數據庫中有兩個表格,即用戶和事件。我試圖在兩個表格之間建立一個has_many關係,然後製作一個讓用戶註冊這些不同事件的表單。我很接近,但我一直運行到這個錯誤,我認爲:未定義的方法`id'爲零:NilClass

undefined method `id' for nil:NilClass 

    <%= link_to event.title, event %> 
    | <%= link_to "delete", event, method: :delete %> 

    <%= form_for(current_user.relationships.build(event_id: @user.id)) do |f| %> 
    <div><%= f.hidden_field :event_id %></div> 
    <%= f.submit "Sign up", class: "btn btn-large btn-primary" %> 
    <% end %> 

這裏是我的人際關係控制器

class RelationshipsController < ApplicationController 

     def create 
     @relationship = Relationship.new(relationship_params) 
     @user = User.find(params[:relationships][:event_id]) 
     current_user.follow!(@user) 
     respond_to do |format| 
     format.html { redirect_to @user } 
     end 
    end 
    end 

我的事件控制器的相關部分:

def new 
    @event = Event.new 
    end 

    private 

    def event_params 
    params.require(:event).permit(:title, :Venue, :Time, :Date) 
    end 

不知道如何解決這個錯誤,任何幫助將不勝感激。

+0

檢查您的用戶正在填充。它看起來不是因爲它說它是零。 –

+0

我目前以用戶身份登錄,並且在我的用戶表中有100個用戶。 – user3494239

+0

這很好,但確保它實際上正在加載。在您的控制器中將params [:relationships] [:event_id]放入控制檯。通過導航控制檯 –

回答

1

在您的控制器新操作中,您必須定義@user。目前這個變量是空的。所以,如果你的id方法上的東西是不存在的,你會得到錯誤undefined method id for Nil...

例如像這樣:

def new 
    @user = User.find(1) 
    @event = Event.new 
end 
3

你應該初始化變量@user

def new 
    @user = User.new 
    @event = Event.new 
end 
+0

現在我在事件中得到了NoMethodError#index'

<% provide(:title, 'All Events') %>

All Events

<%= will_paginate %>
    <%= render @events %>
<%= will_paginate %>
' – user3494239

+0

im不知道你的代碼結構如何,但是我認爲你應該在事件控制器中創建def index並在視圖/事件中創建index.html –

+0

我有這兩件事目前。我的索引是在視圖/事件和我的事件控制器我有'def index \t \t @events = Event.paginate(page:params [:page]) \t end' – user3494239

相關問題