渲染视图另一个控制器

时间:2015-02-11 14:32:06

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 devise ruby-on-rails-3.2

我有一个菜鸟问题。我需要另一个控制器的渲染视图。我使用设计并创建一个perfil控制器。

Perfil控制器:

class PerfilController < ApplicationController
    before_filter :authenticate_user!
    def index
    end

    def show

        @usuario = User.find(current_user)
        @usuario.perfil ||= @usuario.build_perfil
        @perfil = @usuario.perfil
    end

    def update
     @usuario = User.find(current_user)
     @perfil = Perfil.new(perfil_params)
     @usuario.perfil ||= @usuario.build_perfil

     respond_to do |format|

          if @usuario.perfil.update_attributes(perfil_params)
          format.html {redirect_to @usuario, notice: "update" }
     else
        format.html { render action: "show"}
     end
  end
 end

  private

    def perfil_params
       params.require(:perfil).permit(:nombre, :apellido)
    end
 end

用户控制器:

class UsersController < ApplicationController
  before_filter :authenticate_user!
  after_action :verify_authorized

  def index
    @users = User.all
    authorize User
  end

  def show
    @user = User.find(params[:id])
    authorize @user
  end

  def update
    @user = User.find(params[:id])
    authorize @user
    if @user.update_attributes(secure_params)
      redirect_to users_path, :notice => "User updated."
    else
      redirect_to users_path, :alert => "Unable to update user."
    end
  end

  def destroy
    user = User.find(params[:id])
    authorize user
    user.destroy
     redirect_to users_path, :notice => "User deleted."
  end


  private

  def secure_params
    params.require(:user).permit(:role)
  end

end

class PerfilController < ApplicationController
    before_filter :authenticate_user!
    def index
    end

    def show

         @usuario = User.find(current_user)
         @usuario.perfil ||= @usuario.build_perfil
         @perfil = @usuario.perfil 
    end

      def update
       @usuario = User.find(current_user)
       @perfil = Perfil.new(perfil_params)
       @usuario.perfil ||= @usuario.build_perfil

       respond_to do |format|

            if @usuario.perfil.update_attributes(perfil_params)
             format.html {redirect_to @usuario, notice: "actualizado" }
            else
             format.html { render action: "show"}
            end
   end
end

  private

    def perfil_params
      params.require(:perfil).permit(:nombre, :apellido)
    end
 end

PERFIL /显示

<h2>Edit </h2>

<%= form_for @perfil, :url=>{:action=>:update}, :html=>{:method=>:put} do |f| %>


<p><%= f.label :nombres %><br />
<%= f.text_field :nombre %></p>

  <div><%= f.label :apellidos %><br />
  <%= f.text_field :apellido %></div>



  <div><%= f.submit "Actualizar" %></div>
<% end %>


<%= link_to "Atrás", :back %>

好吧,我需要在users / index

中显示更新
<h3>Configuracion de la cuenta</h3>
<div class = "col-md-3">   <h3>Users</h3>
<div class="nav nav-pills nav-stacked">
<%= render 'users/menu' %>
</div>
</div>
<div class = "col-md-7">   
<h3>Informacion</h3>
 <%= render 'users/show' %>
</div>

我希望我能解释清楚。

的问候。

1 个答案:

答案 0 :(得分:0)

您可以使用render呈现应用中的任何视图 处理视图中使用的变量,并将它们包含在方法调用中。

RENDER只发送视图并且不会调用控制器的操作

从控制器渲染其他控制器视图..

在users_controller.rb

##render partial from views/profile
     respond_to do |format|
       format.js { render 'profile/upload' }
       format.html 'profile/upload'
    end

同样可以在视图文件中使用

<%= render 'profile/upload'%>