Tas*_*dis 2 ruby ruby-on-rails
我有一个模型AdminUser,admin_users我的视图中的文件夹只有2个视图(仪表板和索引),以及一个AdminUsersController:
class AdminUsersController < ApplicationController
def dashboard
end
def index
end
def login
if params[:admin_user][:username].present? && params[:admin_user][:password].present?
found_user = AdminUser.where(:username => params[:admin_user][:username]).first
if found_user
authorized_user = found_user.authenticate(params[:admin_user][:password])
session[:admin]=params[:admin_user][:username]
end
end
if authorized_user
redirect_to :controller => 'admin_users', :action => 'dashboard'
else
render :nothing => true, :status => :ok
end
end
end
Run Code Online (Sandbox Code Playgroud)
虽然我有一个登录操作,但我没有它的观点,因为我真的不需要它.
但是Rails搜索视图这一事实让我觉得我做错了; 或者至少不以Rails-y方式做某事.
我应该用另一种方式吗?
您不需要有视图.事实上,存在一些不需要视图的好理由:
这些惯例适用于最常见的情况,但也有一些较为常见且仍然有效的情况的惯例.
请注意,不应将可渲染操作的方法放在类的protected或private部分中,以使它们与实际操作分开.不要在控制器的公共接口中公开任何方法,除了那些旨在作为操作的方法.
如果你碰巧有一个动作(就像问题中的例子一样),你可以说服Rails通过提前返回来绕过搜索对应于该动作的视图.虽然看起来redirect_to已经足够,但它实际上只是响应的一部分.这样做的常用方法是使用redirect_to :page and return成语.
对于给出的示例,使用此:
if authorized_user
redirect_to :controller => 'admin_users', :action => 'dashboard' and return
else
render :nothing => true, :status => :ok
end
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅以下优秀问题和答案:
没有观点是完全可以的。当将不需要视图的方法添加到控制器时,例如创建/更新/销毁方法,您会注意到需要在该方法内添加指向另一个视图的“ render”或“ redirect_to”语句。这告诉Rails不要遵循规范,而是寻找具有该动作名称的视图。
| 归档时间: |
|
| 查看次数: |
969 次 |
| 最近记录: |