我一直在阅读和观看有关学习Rails 4的视频。所有教程都有自己的代码,所以在我看来,很容易理解。我似乎无法学习任何东西或记住一些事情,所以我决定使用自己的代码,看看我是否可以关注而不是使用他们的代码。
到目前为止,我理解Controller与视图相对应:
# In my controller
def index
@x = "I love Ruby"
end
在我的观点中(index.html.erb)
<% = @x %> #=> I love Ruby
这个简单的东西适用于索引页面。现在如果想在该视图的索引中引用其他方法调用,该怎么做?在控制器中:
def index
@x = "I love Ruby"
end
仍然在控制器的类中:
def languages_i_hate
languages = %w[
Perl
PHP
C#
C++ ]
end
在我的index.html.erb中:
<%= These are the languages I hate to bits: #{languages_i_hate.upcase}!
我有未申报的方法或变量“languages_i_hate”
如何在网页中调用方法名称?
答案 0 :(得分:1)
您要在此处尝试访问视图中的控制器方法。执行此操作时,将访问控制器方法,就好像它是帮助程序方法一样。通常情况下,控制器方法不能以这种方式使用,但您可以告诉控制器将它们作为帮助程序使用。
请参阅http://apidock.com/rails/ActionController/Helpers/ClassMethods/helper_method
顺便说一句,如果控制器中的方法不是动作,即不对应路线/网址,则应将它们放在{{1}中按照惯例,在控制器的底部。这使铁路和读者明白他们不会采取行动。答案 1 :(得分:1)
def index
@x = "I love Ruby"
languages_i_hate
end
def languages_i_hate
@languages = %w[Perl PHP C# C++ ]
end
index.html.erb:
<%= "These are the languages I hate to bits: #{@languages_i_hate}" %>
答案 2 :(得分:0)
根据rails惯例,您必须使用帮助程序。其他方法是在渲染模板时使用locals。
def index
@x = "I love Ruby"
render :template => "index.html.erb", :locals =>{:languages_i_hate => languages_i_hate}
end
def languages_i_hate
languages = %w[
Perl
PHP
C#
C++ ]
end
在我的index.html.erb中:
<%= These are the languages I hate to bits: #{languages_i_hate.upcase}!%>