我有一个菜鸟问题。我需要另一个控制器的渲染视图。我使用设计并创建一个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>
我希望我能解释清楚。
的问候。
答案 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'%>