如何使用URL参数和&amp ;;渲染模板正确锚定

时间:2014-12-22 04:40:24

标签: ruby-on-rails-4 view rendering render

在控制器中,我需要为另一个控制器/动作对渲染模板。基本上发生的事情是,我创建了一个RequestController create动作,将工作传递给另一个控制器来处理付款。如果付款未通过,则需要将用户带回create模板再试一次。

复杂性在于我不能只渲染create模板,因为用户建议的表单位于页面底部并且通常是隐藏的。我需要使用一个URL变量在页面底部(锚点)渲染模板,该变量指示不应隐藏表单(show = true)。

这样的事情:

render "staticpages/#{params[:page_name]}?show=true#rent"

问题在于,当我这样做时,我收到错误:

Missing template staticpages/outdoors?show=true#rent

所以我尝试传递必要的变量:

render "staticpages/#{params[:page_name]}", anchor: "rent", show: "true"

但那也不起作用,有什么想法吗?

2 个答案:

答案 0 :(得分:0)

当我必须更改控制器上的布局时,我喜欢做的是:

class UserController < ApplicationController
  layout :choose_layout
  ... 
  def choose_layout
    if condition
      'layout/a'
    else
      'layout/b'
    end
  end
end

这样我可以在条件满足时更改布局

答案 1 :(得分:0)

根据@ sjaime的评论,渲染不能采取这样的变量,这更容易......我只是没有&#39;知道哈哈

我所做的一切都是

@error = true
render "staticpages/#{params[:page_name]}"

然后在视图中,使用JS:

if ('<%= @error =>' === 'true' ) {
  // show something
  // scroll to something
}