基本应用程序。尝试制作一个按钮,在本例中点击并显示下一页。将实例变量从模型传递到控制器的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