Rails更新方法不保存表单数据

时间:2017-03-16 20:56:20

标签: ruby-on-rails

我试图从编辑表单页面转到显示更新信息的预览页面。目前,我向update添加了controller方法,该方法会重定向(提交表单时)到预览页面。但是在预览页面上,没有更新任何内容,数据也没有保存到数据库中。

jobs_controller.rb

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

jobs / 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方法中缺少什么来保存表单数据。

2 个答案:

答案 0 :(得分: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

现在看起来你只是找工作然后重定向。

答案 1 :(得分: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