Rails - 保存 - 返回上一页(或用户点击'编辑'的页面)

时间:2013-03-01 14:12:34

标签: ruby-on-rails-3.2

因为我发现了大量的信息但是没有任何信息似乎有效。

用户可以从两个屏幕之一,客户端索引或主屏幕编辑客户端。我希望更新将它们发送回他们点击编辑按钮的屏幕。

  • 我发现听起来很完美的第一件事是:redirect_to :back
  • 第二件似乎是:request.refererrequest.env['HTTP_REFERER']

这两个“解决方案”只是再次加载编辑屏幕,并没有将用户发送回索引屏幕或主屏幕。

这是我的更新def:

def update
  @client = Client.find(params[:id])
  if @client.update_attributes(params[:client])
    redirect_to clients_path, notice: "#{@client.name} (#{@client.company}) was successfully updated."
  else
    render action: "edit"
  end
end

我做错了什么?

1 个答案:

答案 0 :(得分:0)

终于到了这个底层。

:backrequest.referer按预期工作 - 例如从编辑表单传递到控制器,当然的编辑表单是然后是引用者。所以,我需要在包含引用URL的表单上有一个隐藏字段。

我将此添加到我的表单部分:<%= hidden_field_tag :referrer, request.referer %>

我使用了hidden_field_tag所以我只有一个名为referrer的变量,我不希望它在基于模型名称等的简单形式的任何数组中

然后在控制器中添加了redirect_to params[:referrer]瞧!,一切都有效。

我现在可以单击主页上的编辑按钮,一旦保存,我将被带回主页,或者如果我点击索引页面上的编辑按钮,我会被带回那里,简单!

NB - 对安全性的轻微关注。我可能最终在隐藏字段标记中发送变量,然后在控制器内解释该变量。例如引用者值1转到主页,值2转到索引。我认为这更安全,因为这两个选择是我明确设定的路径。我会稍后对此进行排序并在需要时更新它!