渲染另一个视图而不会丢失变量值

时间:2012-01-06 12:22:32

标签: ruby-on-rails ruby-on-rails-3 forms redirect

我在Rails应用程序中有一个帮助程序,它根据控制器中设置的变量返回一些数据:如:

def title
    base_title = "Unikernel"
    if @title.nil? then
        base_title
    else
        "#{base_title} | #{@title}"
    end
end

在控制器中(通常在每个动作中)我设置值,例如:

@title = "Solutions"

现在当我处理一些结果时,我会从表单提交中获得,如果出现问题,我说:

render action: "edit"

render "new"

当我在渲染页面上时,变量未初始化,等等。

我应该怎么处理这个问题?

1 个答案:

答案 0 :(得分:2)

通常,在更新时出现问题时,您会发现自己处于更新操作中。当创建时出现问题时,创建操作会显示错误消息。您是否也在创建和更新操作中设置了变量?

def new
  @title = "New page"
end

def create
  @title = "Errors!"
end

当您提交表单并收到错误时,您将从@title操作中获得create,如果您尚未将其设置为创建,则@title将为零。

当您致电render时,您没有重定向到其他操作,因此您仍然在update