我有一个Passenger and Driver模型及其相应的控制器(我无法设置会话控制器来封装他们的登录和注销)。我正在尝试在注销时删除会话,但是注销的链接转到了destroy操作,因为它有一个删除方法,但我希望它在乘客控制器中执行注销操作,因为销毁操作是为了摧毁乘客而不是它的会话。
继承轨道错误:
Missing template passengers/destroy, application/destroy with {:locale=>[:en], :formats=
>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}.
Searched in: * "/Users/hamed/Coding/BikeMe/app/views"
以下是我的乘客路线(我也有相同的驱动程序代码副本):
resources :passengers do
get '/dashboard' => 'passengers#dashboard'
end
post '/passengers/login' => 'passengers#login'
delete '/passengers/logout' => 'passengers#logout'
继承人的链接:
<a class="btn btn-primary" data-method="delete" href="/passengers/logout">Logout as
passenger</a>
以下是对乘客控制器的行动:
def login
@passenger = Passenger.find_by_email(params[:passenger][:email])
if @passenger && @passenger.authenticate(params[:passenger][:password])
session[:passenger_id] = @passenger.id
render :dashboard
else
redirect_to '/passengers/new', :notice => "Invalid login. Try again"
end
end
def logout
session[:passenger_id].clear
redirect_to '/passengers/login'
end
def destroy
end
答案 0 :(得分:1)
首先,你所描述的内容确实让你觉得两个独立的控制器会更好。即使你描述它的方式,你必须使用两个不同的名词(“删除会话”与“摧毁乘客”);考虑是否可以将与会话相关的操作移出此控制器。我认为这样会更安全。
除此之外,我没有在您的代码中看到任何直接问题。值得一提的是,您重启了所有相关服务吗?我经常做一个小小的改动,当我没有在浏览器中看到它时反复出现,然后意识到我必须touch tmp/restart
或其他东西(取决于你的网络服务器)。
为了获取您在顶部粘贴的错误消息,您加载了哪些网址?您可以粘贴该URL请求的日志或控制台输出吗? (运行rails s
时)控制台中显示的内容