ruby-on-rails - 如何将变量从控制器传递到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
. 提前致谢 !!!
解决方案
重要更新!
这是错误的
@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
推荐阅读
- wordpress - 如何使用 301 重定向的重写规则删除 URL 中的所有 ? 源行代码
- post - 如何从 NestJs 代码将数据发布到 URL?
- python-3.x - Python RSA 密钥,收到密钥但收到错误“这不是私钥”
- java - 如何配置 apache httpclient 4.5+ SSLContext 以使用带有自签名证书的双向 TLS 身份验证?
- javascript - 如何比较每行中每个数组中的第三个?
- amazon-web-services - AWS ECR 尝试使用 Get-ECRLoginCommnad 失败
- typescript - 父类中的TypeScript方法访问子类中的Type
- node.js - 安装 yeoman 的问题
- python - Python中的词云错误:字符串索引必须是整数
- vue.js - Vuetify Fullscreen 属性未创建高度为 100% 的元素