首页 > 解决方案 > 如何将变量从控制器传递到rails中的部分视图文件?

问题描述

我想将一个变量从控制器发送到部分文件。我的控制器名称是center_controller.rb,部分文件名是_view_center.html.erb. 在控制器中,我有 @notes 变量。当我给予时<%= @notes %>,我没有得到价值观,nil即将到来。你能帮我吗?

center_controller.rb
def view
@notes = Notes.all render"view_center.html.erb"
end

并且在我的 view_center.html.erb <%= @notes %> 但我没有得到 @notes 值,它是 nil. 提前致谢 !!!

标签: ruby-on-railsruby

解决方案


重要更新!

这是错误的

@notes = Notes.all

这是正确的

@notes = Note.all

小心 !当你调用一个类时,你想要单数中的类名


首先,您需要命名视图以匹配控制器方法。

默认情况下,查看文件名与它们绑定的控制器和操作相匹配。

  • 如果你调用你的视图 (view_center.html.erb) 你应该命名你的控制器方法 (view_center) 例子:
#center_controller.rb
def view_center
  @notes = Note.all
end

#views/center/view_center.html.erb
<%= @notes %>


当你想渲染一个使用实例变量的部分时,你应该这样做:

<%= render 'view_center', notes: @notes %>

[notes: @notes] 将变量发送到部分

在部分文件中,您需要这样做:

<% notes.each do |note| %>
<% end %>

否则,请查看 Rails 命名约定,因为通常,控制器文件名是复数: https ://gist.github.com/iangreenleaf/b206d09c587e8fc6399e

  • 中心控制器.rb
  • users_controller.rb
  • ETC

推荐阅读