2016-12-16 9 views
0

をレンダリング私はショーのビューのユーザーの内側にいくつかのURLなurl_forするフォームのparamsを渡す/ redirect_to/

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

を持っているが、フォームに記入して、サーバーに要求を送信することができます。 ユーザーが有効なパラメータを送信しなかった場合、私は彼をリダイレクトする必要があります。検証エラーが表示され、さらにパラメータを入力してください。

このようなものはどのように実装できますか?このため

UPD1

典型的なレール・ソリューションは、render :newまたはrender :editのようなものですが、'/vacancies/:idルートのない'/vacancies/:id(/:mode)のビューをレンダリングしているので、私の場合、私はrender :showを行うことはできません。

また、私はredirect_to :backを試してみましたが、これは1つのことを除いてうまく動作します。つまり、paramsは要求を通過しません。

私はそれらの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

を見つけられませんでしたリダイレクトする代わりにテンプレートを使用します。これは新しく作成されたアクションで多く発生しますが、ショーアクションでフォームを表示するなど、同じ原則がどこにでも適用されます。

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

関連する問題