0

我有一个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 /显示

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

我希望我解释得很好。

问候。

回答

0

您可以渲染应用程序中的任何视图。使用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'%> 
+0

对不起ajaja ..我不明白! :/ – 2015-02-11 15:01:37

相关问题