【问题标题】:rails 3 routing keep custom url for postrails 3 routing 为帖子保留自定义 url
【发布时间】:2012-08-23 19:01:49
【问题描述】:

我对 Rails 很陌生,如果出现错误并呈现“新”模板,我希望为登录的用户保持相同的 url

这是我的路线

resources :users, only: [:new, :create]
resources :sessions, only: [:new, :create, :destroy]

root to: 'pages#home'

match '/signin', to: 'sessions#new'
#match '/signin', to: 'sessions#create', via: :post, as: :post_session
match '/logout', to: 'sessions#destroy'

这里是会话控制器代码

def new
end

def create
    user = User.find_by_email(params[:session][:email])
    if user && user.authenticate(params[:session][:password])
        sign_in user
        redirect_to root_url
    else
        flash.now[:error] = 'Invalid email or password'
        render 'new'
    end
end

如您所见,我注释掉了一条自定义路由来捕捉帖子,以便渲染“新”调用保留 /signin url,但是当我这样做时,错误的 flash 消息不会呈现在页面(虽然它没有那条路线)。我尝试在没有 now 方法的情况下使用 flash,但仍然没有看到我的消息显示。有什么想法吗?

编辑:

我尝试了以下建议,但问题仍然存在。查看访问日志后,应用程序正在路由到第一个登录路由,因为它是用 match 定义的,而不是 get。 我的更新和工作路线文件现在看起来像这样

resources :users, only: [:new, :create]
#resources :sessions, only: [:new, :create, :destroy]

root to: 'pages#home'

match '/signin', to: 'sessions#new', via: :get
match '/signin', to: 'sessions#create', via: :post, as: :post_session
match '/logout', to: 'sessions#destroy', via: :delete

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 rails-routing rails-flash


    【解决方案1】:

    取出现在不需要的东西。您的路线可能有冲突。根据您设置匹配线的方式,您可以完全删除resources :sessions,然后取消注释匹配线。这应该可以满足您的需求。

    另外,请务必返回您的其他问题并接受一些答案。 0% 的接受率不太可能吸引答案。

    编辑

    根据您的 cmets,当您移除资源调用时,它可能只是不知道此时要渲染什么。尝试更改为:

    render "sessions/new"
    

    【讨论】:

    • 我现在已经接受了一些答案;)但是,闪存消息仍然会随着这个新的路由文件资源消失:用户,仅:[:new,:create] #resources:会话,仅:[: new, :create, :destroy] root to: 'pages#home' match '/signin', to: 'sessions#new' match '/signin', to: 'sessions#create', via: :post, as: :post_session 匹配 '/logout', to: 'sessions#destroy', via: :delete
    • 可能是一个愚蠢的问题,但您的视图或布局输出flash[:error]
    • 是的,视图会输出所有的 flash 消息。 flash 消息使用资源 :sessions 路由工作,但随后 url 被重写为 /sessions 错误。使用我的自定义路由来匹配帖子上的登录,flash 消息丢失了
    猜你喜欢
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多