У меня есть эта ошибка с моей ссылкой в моих взглядахРельсы Нет маршрута матчей отсутствуют необходимые ключи: [: ID]
HTML
<% if logged_in? %>
<%=link_to "View Your Cart", cart_path(@cart)%>
<% end %>
мои маршруты
resources :users
resources :parts
resources :carts
resources :categories
resources :line_items
У меня есть это метод для назначения тележки пользователю
def set_cart
@cart = Cart.find_by(id: session[:cart_id], user: session[:user_id])
rescue ActiveRecord::RecordNotFound
@cart = Cart.create
session[:cart_id] = @cart.id
end
Вот мои сеансы контроллер
def new
@user = User.new
end
def create
if params[:provider] == "facebook"
user = User.from_omniauth(env["omniauth.auth"])
session[:user_id] = user.id
redirect_to root_path
else
@user = User.find_by(email: params[:user][:email])
@user = User.new if @user.blank?
if @user && @user.authenticate(params[:user][:password])
session[:user_id] = @user.id
@cart = Cart.create
@user.cart = @cart.id
@user.save
redirect_to @user
else
flash[:notice] = "Failed to login, please try again"
render 'new'
end
end
end
def destroy
session[:user_id] = nil
redirect_to root_url
end
end
А вот моя корзина контроллер
class CartsController < ApplicationController
before_action :set_cart, only: [:show, :edit, :update, :destroy]
rescue_from ActiveRecord::RecordNotFound, with: :invalid_cart
def show
@cart = Cart.find(params[:id])
end
def edit
@cart = Cart.new(cart_params)
end
def update
@cart = Cart.find(params[:id])
if @cart.update_attributes(cart_params)
redirect_to @cart
end
end
def destroy
@cart.destroy if @cart.id == session[:cart_id]
session[:cart_id] = nil
respond_to do |format|
format.html { redirect_to root_path }
format.json { head :no_content }
end
end
private
def cart_params
params.require(:cart).permit(:user_id)
end
def invalid_cart
logger.error "Attempt to access invalid cart #{params[:id]}"
redirect_to root_path, notice: "Invalid cart"
end
end
Следующая ошибка "Нет маршрут соответствует {: действие =>" показать»,: контроллер => "телеги", : id => nil} отсутствуют необходимые ключи: [: id] "поднимается, когда пользователь подписывается в свою учетную запись. Я хочу, чтобы пользователь имел ссылку «View Your Cart» при входе в систему (внутри макетов), чтобы они могли просматривать свою тележку в любом месте. Однако эта ошибка возникает после входа в систему. Любая помощь с этим оценивается, и я рад предоставить дополнительную информацию.
Попробуйте 'redirect_to user_path (@user)' –
для link_to "Посмотреть корзину" ??? – Dan