渲染视图另一个控制器



我有一个noob问题。我需要从另一个控制器渲染视图。我使用设计和创建了一个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/show

<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 %>

嗯,我需要在用户/索引中显示更新

<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>

我希望我解释得好。

谨致问候。

您可以从应用程序中呈现任何视图。。使用渲染注意视图中使用的变量,并将它们包含在方法调用中。

渲染器仅渲染视图,不调用控制器的操作

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

在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'%>

最新更新