实例变量未显示在视图表单中
Instance variable not showing in view forms
我在让实例变量显示在我的视图中时遇到问题。我正在使用私有方法设置它,并且我正在使用 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) %>
我不确定还需要做什么才能在视图中使用实例变量。我也想知道之后是否仍然可以在更新语句中访问实例变量?如有任何帮助,我们将不胜感激!
在 before_filter 中设置 set_form
没有任何价值,因为您在方法中调用它。
您需要显式呈现您的视图文件...我看不到您正在这样做。如果表单被调用(例如)edit_value.html.erb
那么你的两个 edit_...
方法需要有
render :edit_value
实例值在更新语句中不可用。当您更新时,除了在您的表单或 url 中提交的信息,或您保存在 session
哈希中的任何内容,或您保存到数据库中的任何内容之外,没有任何可用的信息。
我在让实例变量显示在我的视图中时遇到问题。我正在使用私有方法设置它,并且我正在使用 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) %>
我不确定还需要做什么才能在视图中使用实例变量。我也想知道之后是否仍然可以在更新语句中访问实例变量?如有任何帮助,我们将不胜感激!
在 before_filter 中设置 set_form
没有任何价值,因为您在方法中调用它。
您需要显式呈现您的视图文件...我看不到您正在这样做。如果表单被调用(例如)edit_value.html.erb
那么你的两个 edit_...
方法需要有
render :edit_value
实例值在更新语句中不可用。当您更新时,除了在您的表单或 url 中提交的信息,或您保存在 session
哈希中的任何内容,或您保存到数据库中的任何内容之外,没有任何可用的信息。