【问题标题】:Rendering an action in another controller在另一个控制器中渲染动作
【发布时间】:2011-06-02 15:34:40
【问题描述】:

(导轨 2.3.5)

我有两个脚手架:目录和用户

对于目录显示操作(例如显示操作:“\directories\2”),我采用了 User\New 表单并将其设为部分,以便用户可以将用户添加到目录。我想不通的是,如果有任何验证错误,我如何在创建操作中返回“\directories\2\show”。如果 User.save 成功返回工作正常,我只是不知道如何格式化渲染操作以返回目录并在新用户部分中显示错误消息和字段。

如果保存成功,这工作正常,如果有错误,使用相同的东西将工作,除了 error_messages 不会显示(我知道错误消息只假设在渲染上传递,而不是重定向,但是当涉及 id 参数时,我无法弄清楚渲染操作所涉及的语法):

format.html { redirect_to directory_path(@user.directory_id) }

用户创建操作在 Direcory Show 操作中被部分调用: 定义创建 @user = User.new(params[:user])

    respond_to do |format|
      if @user.save
        flash[:notice] = 'User ' + @user.name+ ' was  successfully created.'
        format.html { redirect_to directory_path(@user.directory_id) }
        format.xml  { render :xml => @user, :status => :created, :location => @user }
      else
        # what to do here to successfully return to 'directories\show\(@user.directory_id)'
        # and what to do here that successfully passed the error_messages
      end
    end
  end

感谢您的帮助 - 希望这是有道理的

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    要从另一个控制器渲染动作,您需要指定要渲染的模板。

    渲染:模板 => 'other_controller/view_template_name'

    PS:请记住,您必须定义其他控制器操作定义的视图渲染所必需的任何实例变量,因为渲染模板不会在渲染视图之前调用其他控制器的函数。

    【讨论】:

    • 非常感谢 - 非常感谢 :)
    猜你喜欢
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 2018-04-18
    • 2015-07-31
    • 2014-05-28
    • 1970-01-01
    相关资源
    最近更新 更多