保存模型后,我想重定向到a模型索引视图.

def create
  @test = Test.new(params[:test])

  respond_to do |format|
    if @test.save
      format.html { redirect_to @test, notice: 'test was successfully created.' }
    else
      format.html { render action: "new" }
    end
  end
end

我试过了

    format.html { render action: "index", notice: 'Test was successfully created.' }

但是我在/app/views/tests/index中发现了以下错误.html.雇员再培训局-

   undefined method `each' for nil:NilClass

知道怎么回事吗?

推荐答案

render action: "index"

不会重定向、重定向和渲染不同的渲染,渲染只会使用当前可用的变量渲染视图.使用重定向时,控制器的索引功能将运行,然后从那里呈现视图.

之所以会出现错误,是因为您的索引视图需要一些数组,而您没有提供给它,因为您只是渲染"索引",并且您没有视图所需的变量.

你可以用两种方式来做

1-使用render action: "index"

在渲染之前,让视图可以使用它需要的所有变量,例如,它可能需要一个@posts变量,用于显示帖子列表,因此在渲染之前,您需要在创建操作中获取帖子

@posts = Post.find(:all)

2-不要渲染redirect_to

不是呈现"索引",而是重定向到索引操作,该操作将负责执行索引视图所需的必要操作

redirect_to action: "index"

Ruby-on-rails相关问答推荐

使用Hotwire/Turbo的Rails在链接悬停时获取请求

为什么这个rails Collection_select不呈现关联属性?

如何在嵌套路由中使用Ruby on rails多态关联

如何从 Rails7.2 中的控制器获取名称空间?

无法在 Rails 中使用 wkhtmltopdf 写入临时文件

Ruby on Rails form_with 不显示错误,卡在服务器端

Rspec期望()与期望{}

如何为 I18n 设置 raise_on_missing_translations

Rails - Comment.count没有改变1

URL 中的 Rails slugs - 使用 Active Record Model Post 的 Title 属性而不是 ID

如何在 IRB/Rails 控制台中 suppress 返回值的输出?

fields_for 表单构建器对象为零

将 Amazon SES 与 Rails ActionMailer 结合使用

了解 Rails 验证:allow_blank 有什么作用?

在两个 DateTime 之间迭代,步长为一小时

Rails 成语避免在 has_many 中重复:通过

在 ruby​​ on rails 上构建方法

强参数需要多个

我怎样才能看到水豚在失败的黄瓜步骤中发现了什么?

Ruby 中的类别名