2016-09-29 12 views
0

ユーザー、イベント(ユーザーが作成したもの)を持つRailsアプリケーションのサンプルを作成しており、最終的にユーザーはこれらのイベントを購読/参加することができます。redirect_toの後にRailsビューがリフレッシュされない

私は、ユーザーがイベント行のlink_toボタンをクリックすると、イベントを購読したり購読を解除することができるテーブルを用意しています。 link_toはcurrent_pathへのリダイレクトを持つevent_controllerのメソッドを呼び出しますが、ボタンをクリックするとビューに何も起こりませんが、サーバーがビューをレンダリングするように見えます。

これは私がevent_controllerから呼び出していますが、Userのshowコントローラを使用しているためですか?

LOG:

Rendered users/show.html.erb within layouts/application (17.1ms) 

ユーザー> show.html.erb

<% if current_user?(@user) %> 
     <td><%= link_to "Delete", e, method: :delete, 
         data: { confirm: "You sure?" } %></td> 
    <% else %> 
     <% if attendingEvent?(current_user, e.id) %> 
      <td><%= link_to "Not Going", events_remove_event_to_attend_path(event_id: e.id, event_owner_id:@user.id, current_path:request.fullpath), remote: true %></td> 
     <% else %> 
      <td><%= link_to "I Want To Go", events_add_event_to_attend_path(event_id: e.id, event_owner_id:@user.id, current_path:request.fullpath), remote: true %></td> 
     <% end %> 
    <% end %> 

events_controller.rb

def add_event_to_attend 
    puts attend_params 
    puts request.fullpath 
    @attend = Attendee.new 
    @attend.event_id = (attend_params[:event_id]) 
    @attend.user_id = current_user.id 
    if @attend.save 
     flash[:success] = "You created an assocations" 
     redirect_to(attend_params[:current_path]) 
     puts 'saved' 
    else 
     flash[:danger] = "You did not create the event" 
     puts 'not saved' 
    end 
    end 

    def remove_event_to_attend 
    @event_to_delete = Attendee.find_by_user_id_and_event_id(current_user.id,params[:event_id]) 
    @event_to_delete.destroy 
    redirect_to(attend_params[:current_path]) 
    end 
+0

こんにちは。だから...あなたのコードに 'puts'を入れたことに気付きました...サーバのログ/端末の画面には何が表示されますか?第二に、あなたのrjsテンプレートには何がありますか?あなたはrjsテンプレートを持っていますか?あなたはリンクをリモートにしました。つまり、あなたはjsリクエストを送信しています。そしてブラウザは、そうするように指示するjを送り返すと、そのビューだけを変更します。代わりに、リンクから 'remote:true'を削除することでこれを非常に迅速に修正することができます。そして、リダイレクトはちょうど仕事になります... –

答えて

1

こんにちはとスタックオーバーフローを歓迎します。

だから最初に...あなたのコードにputセスを入れたことに気付きました。サーバログ/端末画面には何が表示されますか?

第2に、あなたのrjsテンプレートには何がありますか?あなたはrjsテンプレートを持っていますか?あなたはリンクをリモートにしました。つまり、あなたはjsリクエストを送信しています。そしてブラウザは、そうするように指示するjを送り返すと、そのビューだけを変更します。

また、remote: trueをリンクから削除することで、これを非常に迅速に修正できます。リダイレクトは、もはやjs要求ではなく通常の要求であるため、リダイレクトはJust Work ...となります。

+1

ありがとうTaryn!以前の反復からの遺物であったrjsのようです! ありがとうございました!私はできるだけ早くあなたの答えを受け入れるようになるでしょう! – got2jam

0

Ruby on Railsの新機能です。

Tarynの答えに何かを追加したいと思います。おそらくredirect_back fallback_location: asd_pathを使用した場合、asd_pathは同じページのパスの名前であり(同じアクションではない)、動作する可能性があります。

これが役立ち、Railsにようこそ!私も初心者ですが、習得するのは簡単です!そして私は< 3ルビー、一目惚れ。

クイックノート:私はRails 5を使用しています。同じものを使用していない場合、動作しない可能性があります。チェックインRails docs(使用しているのと同じバージョンを確認してください)

関連する問題