在另一个控制器中渲染动作

(Rails 2.3.5)

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

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

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

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

用户在Direcory Show动作中创建由partial调用的动作:def create @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 

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

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

 render:template =>'other_controller / view_template_name'

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