ruby-on-rails - 在另一个 Controller 中渲染一个 Action

标签 ruby-on-rails

( rails 2.3.5)

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

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

如果保存成功,这可以正常工作,如果出现错误,则使用相同的东西将起作用,除非不会显示 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

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

最佳答案

要从另一个 Controller 渲染 Action ,您需要指定要渲染的模板。

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

P.S:请记住,您必须定义其他 Controller 操作定义的任何实例变量,这些变量是 View 渲染所必需的,因为渲染模板不会在渲染 View 之前调用其他 Controller 的函数。

关于ruby-on-rails - 在另一个 Controller 中渲染一个 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4581269/

相关文章:

ruby-on-rails - 将Zeus与Rails 3和Docker结合使用

ruby-on-rails - EOFError:文件结尾已到达 Net::HTTP 问题

ruby-on-rails - 具有不同名称的 FactoryGirl 协会

ruby-on-rails - 用于亚马逊 S3 的 AutoSmusher 优化图像?

ruby-on-rails - Postgresql安装后出现错误

ruby-on-rails - 启动 Rails 控制台时如何自动运行代码?

ruby-on-rails - 使用 .map 函数给出 PG::GroupingError: ERROR: column "materials.id"in Rails App

ruby-on-rails - 测试环境中不调用 PostgreSQL 触发器(运行 RSpec 时)

ruby-on-rails - 增加csv下载记录的限制

ruby-on-rails - 我可以使用 link_to 链接图像和文本吗