作爲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