Ruby on rails Rails 5.1控制器操作实例变量未出现在视图中
这很奇怪,我一定是错过了什么,因为我已经做了一百万次了,这是我第一次看到这个 创建控制器操作:Ruby on rails Rails 5.1控制器操作实例变量未出现在视图中,ruby-on-rails,Ruby On Rails,这很奇怪,我一定是错过了什么,因为我已经做了一百万次了,这是我第一次看到这个 创建控制器操作: def create @album = Album.new(album_params) respond_to do |format| if @album.save format.html { redirect_to @album, notice: 'Album was successfully created.' } format.js
def create
@album = Album.new(album_params)
respond_to do |format|
if @album.save
format.html { redirect_to @album, notice: 'Album was successfully created.' }
format.json { render :show, status: :created, location: @album }
else
format.html { render :new }
format.json { render json: @album.errors, status: :unprocessable_entity }
end
end
end
def album_params
params.require(:album).permit(:title)
end
以及成功创建相册后的普通视图:
<p id="notice"><%= notice %></p>
<p>
<strong>Title:</strong>
<%= @album.title %>
</p>
<%= link_to 'Edit', edit_album_path(@album) %> |
<%= link_to 'Back', albums_path %>
标题:
|
我通过调试检查了创建相册后,@album的设置是否正确。我还设置了第二个实例变量@foo=100。但在任何情况下,当视图被渲染时,两个实例变量都为零,我得到了这个错误(参见图,这是最简单的方法)
如果查看请求参数部分,您将看到:
{ "controller" => "albums", "action" => "show", "id" => "20" }
错误来自于呈现show
操作,而不是create
操作
所发生的情况是,在您创建@album
之后,它正在执行重定向到显示操作
show
操作可能未定义,并且未设置@album
实例变量。如果查看请求参数部分,您将看到:
{ "controller" => "albums", "action" => "show", "id" => "20" }
错误来自于呈现show
操作,而不是create
操作
所发生的情况是,在您创建@album
之后,它正在执行重定向到显示操作
show
操作可能未定义,并且未设置@album
实例变量显示控制器显示操作。显示控制器显示操作。感谢对哑错误的友好(见上文)响应:)感谢对哑错误的友好(见上文)响应:)