基本應用程序。嘗試製作一個按鈕,在本例中點擊並顯示下一頁。將實例變量從模型傳遞到控制器的Rails中
在我的控制,我有:
def show
@lesson = Lesson.find(params[:id])
end
在我看來(show.html.erb)我有:
...
<p><%= link_to 'Previous', Lesson.previous(@lesson) %></p>
<p><%= link_to 'Next', Lesson.next(@lesson) %></p>
...
在我的模型,我有:
def self.next(current_lesson)
current_lesson.number + 1
end
def self.previous(current_lesson)
current_lesson.number - 1
end
我的模式包含一個數字列,它是一個整數。
但是,這個錯誤與'未定義的方法`to_model爲0:Fixnum',當我在控制檯運行@lesson時,它出現爲零。
我也試過這樣:
def self.next
current_lesson = Lesson.find(@lesson.id)
next_lesson = current_lesson.number + 1
end
def self.previous
current_lesson = Lesson.find(@lesson.id)
previous_lesson = current_lesson.number - 1
end
然而,這成功通過模型的實例變量,因爲在@lesson返回正確的值,但它不能調用該方法的控制檯。
想法?
編輯:另一種解決方案嘗試:
我想這個不斷變化的實例方法,而不是一類方法。所以在視圖中,我設置了@ lesson.previous和@ lesson.next。在模型中我這樣做:
def next
self.number + 1
end
def previous
self.number - 1
end
但是,唉,我又得到@instance零誤差。
古怪,如果我通過從包含的任何視圖中的參數,實例變量的值丟失並返回零。所以,在我看來,我需要傳遞實例變量,但是一旦我接受該值作爲參數,它就會丟失。任何人都可以解釋我錯過了什麼嗎? – user3162553
你的問題是你調用'link_to「Next」,12'(假設current_lesson.number是11),rails不知道該怎麼做。它應該做什麼? –
好的。我目前的網址是說課/ 2我想下一個去上課/ 3和以前的課/ 1。這只是一種說法,讓我們去下一個編號的課程。 – user3162553