2016-12-16 54 views
0

我有一些網址形式傳遞到PARAMS url_for/redirect_to的/渲染

get '/vacancies/:id(/:mode)', to: 'vacancies#show', as: 'vacancy', constraints: { mode: /(resume|file)/} 

放映視圖用戶可裏面的表格併發送請求到服務器。 如果用戶發送無效的參數,我應該重定向他回來,顯示驗證錯誤,我也應該保持填寫params。

我該如何實現這個東西?

upd1

這個典型的Rails解決方案是一樣的東西render :newrender :edit,但對我來說,我不能做render :show因爲被渲染視圖'/vacancies/:id路線不是爲'/vacancies/:id(/:mode)

另外我試過做redirect_to :back和這工作正常,除了一件事情︰PARAMS不通過請求傳遞。

我猜裏面有response對象的解決方案,但沒有找到尚未

UPD2

class VacanciesController < ApplicationController 
    # vacancies/:id - is just show view 
    # vacancies/:id/resume - is show view with form 
    # vacancirs/:id/file - is show view with form for sending pdf|doc|etc 
    def show 
    @vacancy = Vacancy.find(params[:id]) 
    end 

    def create 
    if Vacancy::SaveResume.new(resume_params).call.valid? 
     redirect_to vacancies_path 
    else 
     # didn't know what to do there 
    end 
    end 
end 
+0

這是非常基本的Rails的東西。如果你仍然陷入困境,我建議給[本指南](http://guides.rubyonrails.org/action_controller_overview.html)閱讀併發布更詳細的問題。 – Thilo

+0

@Thilo我剛更新了帖子 – DmitrySharikov

+0

你最好在這個特殊情況下使用ajax。 – Ilya

回答

0

在你的控制,以保持這些參數,可以將你重新呈現同樣的觀點模板而不是重定向。這種情況在新建和創建操作中發生了很多,但同樣的原理適用於任何地方,例如在show操作中顯示錶單。

class PostsController < ApplicationController 
    def new 
    @post = Post.new 
    render :new 
    end 

    def create 
    @post = Post.new(params[:post]) 
    if @post.save 
     redirect_to :show 
    else 
     render :new # re-render another template 
    end 
    end 
end 
+0

沒有爲我工作 – DmitrySharikov