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

时间:2011-01-03 00:21:05

标签: ruby-on-rails

(Rails 2.3.5)

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:9)

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

render :template => 'other_controller/view_template_name'

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