2016-12-19 4 views
2

私は自分のページを接続しようとしているので、ユーザーにはショーページがあり、ショーページに行くとイベントが表示されます。イベントはクリックすることもできます。クリックするとそのイベントの表示ページに直接移動します。ここでイベント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 

は、あなたがより多くのコードが必要な場合は私に知らせて、私が取得していますエラーがここ

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

が私のイベントの形のように見えるものです私のエラーは、最初の行のイベントフォームで発生する問題を把握する。これは簡単な作業でなければならないので、これは本当にイライラしています。

+0

をあなたは 'redirect_to event_path(@event)'または類似した何かを 'create'アクションで。任意の 'render'呼び出しは問題を引き起こす可能性があります。 – tadman

+0

ユーザーの表示ページ(イベントを作成する場所)にどのようにリダイレクトするのですか – Aaron

+0

送信フォームの「リダイレクト先」パラメータを元のページに戻すために使用する場合があります。私は通常、このパラメータを簡潔さのために 'r'と呼んでいますが、あなたはそれをあなたが望むものと呼ぶことができます。フォーム自体に入れて、フォームエラーがあっても作成が成功するために2回の試行が必要な場合でも、フォームが入力されたままになっていることを確認してください。 – tadman

答えて

1

は、テンプレートで(行方不明@に注意してください)

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

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

を変更してみてください。

+0

あなたは魔術師です! – Aaron

1

event_path(@event)などのパスヘルパーの使用はどうですか?

あなたのビューはその後になる:通常

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

ああ、これもうまくいった。ありがとう:D – Aaron

関連する問題