Rails redirect_to 时怎么解构 params 传参数

newRer · 2017年09月18日 · 最后由 newRer 回复于 2017年09月19日 · 1652 次阅读

我在 edit 方法判断如果没有新的 model,就 new 一个,这时候原有的散列需要传进去,可是我觉得 code: params[:code], date: params[:date] 写法太难看,试了几种别的不行,应该可以解构这个散列,不知道怎么写

 def edit
  ...
  if st.count > 0
    @strategy = st.first
  else
    redirect_to controller: 'strategies', action: 'new', code: params[:code], date: params[:date]
  end
end

def new
    @strategy = Strategy.new(code: params[:code], date: params[:date])
end

def strategy_params
    params.require(:strategy).permit(:code, :date)
end

edit 方法为什么要负责 new 啊……

代码没写全,edit 会先查找另一个实体,如果不存在就 new 一个

redirect_to request.params.slice(:code, :date).merge({ action: :new })
  • request.params 会取当前参数,然后选择其中的 code, date
  • controller 键可以省略,默认取当前
pinewong 回复

谢谢,要的就是这个

newRer 关闭了讨论。 09月19日 14:56
需要 登录 后方可回复, 如果你还没有账号请 注册新账号