实例变量未在视图表单中显示

时间:2016-01-15 22:33:33

标签: ruby-on-rails forms ruby-on-rails-4 ruby-2.0

我在获取要在我的视图中显示的实例变量时遇到问题。我正在使用私有方法设置它,我正在使用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) %>

我不确定我还需要做些什么才能在视图中使用实例变量。我也想知道是否仍然可以在更新语句之后访问实例变量?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

在before_filter中设置set_form没有任何价值,因为您在方法中调用它。

你需要显式渲染你的视图文件......我没有看到你这样做。如果调用表单(例如)edit_value.html.erb,那么您的两个edit_...方法需要

render :edit_value

更新语句中没有实例值。当您更新时,除了您在表单或网址中提交的信息,或者您在session哈希中保存的任何内容或您持久保存到数据库中的任何内容之外,没有任何内容可用。

相关问题