У меня возникают проблемы с получением переменной экземпляра, отображаемой в моих представлениях. Я устанавливаю его с помощью частного метода, и я использую before_filter, чтобы обеспечить доступ к нему в двух местах, в которых я нуждаюсь. Однако переменная экземпляра не отображается в представлении, не говоря уже о необходимости действия.Переменная экземпляра, не отображающая формы вида
В моем контроллере у меня есть
class UsersController < ApplicationController
before_action :set_user, only: [:show, :edit, :update, :destroy]
before_filter :set_form, :only => [ :edit_password, :edit_email ]
...
def edit_password
@user = current_user
set_form('password')
end
def edit_email
@user = current_user
set_form('email')
end
...
private
def set_form(edit_type)
@form = edit_type
end
Вот файл представление
<h1>Edit Your Account</h1>
<title><%= @form %></title>
<% if @form == 'email' %>
<%= render 'edit_email_form' %>
<% else %>
<%= render 'edit_password_form' %>
<% end %>
<%= link_to 'Back', user_path(@user) %>
я не уверен, что еще мне нужно сделать, чтобы быть в состоянии использовать переменный экземпляр в представлении , Мне также интересно, можно ли еще получить доступ к переменной экземпляра в инструкции обновления? Любая помощь будет оценена!
спасибо! В порядке ли это так? или это не должно допускаться в рамки MVC рельсов? – chris
Это разрешено, но в целом вы хотите как можно больше минимизировать логику в представлении. Если бы я писал это, у меня бы «edit_password» и «edit_email» отображали отдельные виды. Если есть какие-то вещи, которые должны быть общие между двумя (например, ваш 'link_to: back'), я бы поставил это в частичном, который вызывается обеими формами. – SteveTurczyn
отлично, спасибо! – chris