2016-12-19 10 views
2

Я пытаюсь подключить свои страницы так, чтобы у пользователя была страница показа, и как только они попадают на страницу показа, они видят события. Событие также можно щелкнуть, и как только это событие будет нажато, оно будет непосредственно отображаться на странице показа событий. Ошибка я получаюИдентификатор события nil

No route matches {:action=>"show", :controller=>"events", :id=>nil} 

Вот что мои события форма выглядит следующим образом:

<span class="name">EventName: <%= link_to(event.name, controller: "events", action: "show", id: @event) %></span> 
<span class="partycode">PartyCode:<br><%= event.partycode %></span> 

Вот мой События контроллер:

class EventsController < ApplicationController 
    def show 
     @event = Event.find(params[:id]) 
    end 

    def create 
     @event = current_user.events.build(event_params) 
     if @event.save 
      flash[:success] = "Event Created!" 
      redirect_to root_url 
     else 
      render 'welcome#index' 
     end 
    end 

    def destroy 
    end 

    private 

     def event_params 
     params.require(:event).permit(:name, :partycode) 
     end 
end 

Позвольте мне знать, если вам нужно больше кода для выяснения проблемы моя ошибка возникает в форме событий в первой строке. Это было очень неприятно, потому что это должна быть простая задача.

+0

Нормально в 'create' действия вы делаете' redirect_to event_path (@event) 'или что-то подобное. Произвольные вызовы 'render' могут вызвать проблемы. – tadman

+0

Как перенаправить обратно на страницу показа пользователей (то есть, где я создаю события) – Aaron

+0

Иногда стоит передать параметр «перенаправление на» в форме отправки, которую вы используете, чтобы отправить людей на их исходную страницу. Я обычно называю этот параметр 'r' для краткости, но вы можете называть его чем угодно. Просто не забудьте поместить его в форму и убедитесь, что она остается заполненной, даже если есть ошибки в форме, и вам нужно две попытки создать для успеха. – tadman

ответ

1

Try изменения

<%= link_to(event.name, controller: "events", action: "show", id: @event) %> 

к

<%= link_to(event.name, controller: "events", action: "show", id: event.id) %> 

(обратите внимание на отсутствие @) в шаблон.

+0

Вы, сэр, волшебник! – Aaron

1

Как с помощью помощников пути, таких как event_path(@event).

Ваше мнение стали бы тогда:

<%= link_to(@event.name, event_path(@event) %> 
+1

А, это сработало. Благодарю вас: D – Aaron