0

ハマった。あなたの助けが必要です。で検証したパスを使用したにもかかわらずrake routes

user_queue_videos GET    /users/:user_id/queue_videos(.:format)          queue_videos#index

次のエラーが発生しました:

ActionController::RoutingError at /videos
No route matches {:controller=>"queue_videos"}

ビュー内のリンク

%li= link_to "My Queue", user_queue_videos_path

ルート.rb

  resources :users, only: [:new, :create] do
    resources :queue_videos
  end

queue_videos_controller

  class QueueVideosController < ApplicationController
    before_filter :require_user

    def index
      @videos = current_user.my_queued_videos
    end

  end

使用しようとしましmember routesたが、うまくいかなかったので、削除しましたが、まだインデックステンプレートをレンダリングしません...

2回目の試行:私が入れたとき

  class QueueVideosController < ApplicationController
    before_filter :require_user

    def index
      @user.id = current_user.id #current_user is defined in ApplicationController
      @videos = current_user.my_queued_videos
    end

  end

ビューで

  %li= link_to "My Queue", user_queue_videos_path(@user.id)

次のエラーが表示されます。

RuntimeError at /videos
Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id

3回目の試行: 次に、次のことを試しました: in view

  %li= link_to "My Queue", user_queue_videos_path(current_user.id)

次のエラーが表示されます。

NoMethodError at /users/1/queue_videos

undefined method `id=' for nil:NilClass

注:ApplicationControllerで

  class ApplicationController < ActionController::Base
    protect_from_forgery

    helper_method :logged_in?, :current_user

    def current_user
      @current_user ||= User.find(session[:user_id]) if session[:user_id]
    end

    def logged_in?
      !!current_user
    end

    def require_user
      unless logged_in?
        flash[:error] = "You don't have permission to do this"
        redirect_to root_path
      end
    end
  end
4

1 に答える 1

0

rake routesあなたの出力によると、ユーザーのメンバーであるため、routes.rbを渡す必要があります。user_id例えば:

%li= link_to "My Queue", user_queue_videos_path(current_user.id)

お役に立てれば!

于 2013-05-17T16:52:36.070 に答える