作为Ruby on Rails的新手,我明白“@”和“:”引用有不同的含义。我在SO中看到了this post,其中描述了一些差异。Ruby - 变量和@variable之间的区别
- @表示实例变量(例如,@my_selection)
- :表示别名(例如:my_selection)
我遇到了一个情况,我有一个标准MVC页面,类似于我的web应用程序中的所有其他表单/页面。
html.erb片断
<%= form_for @my_selection do |f| %>
route.rb片断
resources :my_selections
当我试图访问这个网页,我得到这个错误:
NoMethodError in selections#create
Showing C:/somedir/myapp/app/views/my_selections/index.html.erb where line #16 raised:
undefined method `my_selection_index_path' for #<#<Class:0x1197e5676>:0x25439c3b>
第16行是表单摘要显示以上。
我在同一个网络应用程序中的所有其他表单/页面都以完全相同的方式设置,并且工作正常。但是,一旦我将erb格式引用更改为:my_selection,此错误消失,我的页面正常运行。
问题:
- 是我之间的差异的理解:my_selections和@my_selections是否正确?
- 为什么要切换到:my_selection解决我的原始错误?
我必须检查一下我的模型在做什么,但我绝对赞赏这个解释。 – JW8