2017-03-16 20 views
0

私は編集フォームページから、更新された情報を表示するプレビューページに移動しようとしています。現在、私はcontrollerupdateメソッドを追加しました。フォームが提出されたときにプレビューページにリダイレクトされます。しかし、プレビューページでは何も更新されず、データはデータベースに保存されません。Railsの更新メソッドがフォームデータを保存していません

jobs_controller.rb

def update 
    @job = Job.find(params[:id]) 
    redirect_to preview_path(id: @job.id), notice: 'Job was successfully updated.' 
end 

ジョブ/ preview.html.erb

<span class="col-md-12 col-centered"> 
    <%= link_to 'Edit', edit_job_path(@job), :class => "jobBack-btn" %> 
    <%= link_to "Publish",'#', id:'link_id', class: "btn" %> 
</span> 

私はupdate方法を削除する場合は、編集フォームを保存し、(デフォルトでは)showページにリダイレクトします。私は変更を見るためにプレビューページに行く必要があります。私はupdateのフォームデータを保存する方法で私が見逃しているものがわからない。

+0

あなたはおそらく更新アクションのデフォルト実装を提供し、いくつかの宝石を使用しています。それを確認できますか? – Raffael

+2

あなたの更新アクションは '@ job'を実際に更新するわけではありません。私はそのメソッドで '@ job.update(params.require( 'job'))'のようなものを見たいと思うでしょう。 (また、 '@ job.update'の戻り値をチェックしたいと思うかもしれません。) – Raffael

+0

@Raffael私は更新用のデフォルトの実装を提供する宝石を使っていたとは思いません。あなたは '@ job'を取り出して何もしないので、実際に更新していない更新アクションについて正しいと思います。私は自分のコードを更新し、あなたのコメントのおかげで更新とリダイレクトが完了しました。 – teresa

答えて

1

実際にupdateメソッドでオブジェクトを更新しようとしましたか?

def update 
    @job = Job.find(params[:id]) 
    if @job.update(update_params) 
    redirect_to preview_path(id: @job.id), notice: 'Job was successfully updated.' 
    else 
    redirect_to somewhere_path, notice: @job.errors.full_messages.join "\n" 
    end 
end 

private 

def update_params 
    params.require(:job).permit(...) 
end 

今は単にジョブを見つけてリダイレクトしているようです。

0

私は自分のコードを更新しました。これでコメントに更新され、リダイレクトされました。私は古いバージョンのRails(Rails 4.0.8)を使用しています。

jobs_controller.rb

def update 
    @job = Job.find(params[:id]) 
    if @job.update(params.require('job')) 
    redirect_to preview_path(id: @job.id), notice: 'Job was successfully updated.' 
    else 
    redirect_to '/jobs' 
    end 
end 
関連する問題