Rails 4:控制器和模型中有什么?
Rails 4: What Goes in Controller and Model?
我一直在阅读和观看一些关于学习的视频Rails 4. 所有教程都有自己的代码,所以在我看来,很容易理解。我似乎无法学到任何东西或记住一些东西,所以我决定使用我自己的代码,看看我是否可以遵循而不是使用他们的代码。
目前我理解的Controller对应的views:
# In my controller
def index
@x = "I love Ruby"
end
在我看来 (index.html.erb)
<% = @x %> #=> I love Ruby
对于索引页来说,这个简单的事情就可以了。现在如果想在该视图的索引中引用其他方法调用怎么办?在控制器中:
def index
@x = "I love Ruby"
end
仍在控制器内 class:
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"
如何调用网页中的方法名?
您在这里要做的是访问视图中的控制器方法。当你这样做时,控制器方法被访问,就好像它是一个 helper 方法一样。通常控制器方法不能以这种方式使用,但您可以告诉控制器将它们作为助手提供。
见http://apidock.com/rails/ActionController/Helpers/ClassMethods/helper_method
顺便说一句,当控制器中的方法不是 actions,即不对应 route/url 时,您应该将它们放在 protected
部分,按照惯例位于控制器的底部。这让 rails 和 reader 明白它们不是行动。
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}" %>
根据 rails 惯例,您必须使用 Helpers。另一种方法是在渲染模板时使用局部变量。
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}!%>
我一直在阅读和观看一些关于学习的视频Rails 4. 所有教程都有自己的代码,所以在我看来,很容易理解。我似乎无法学到任何东西或记住一些东西,所以我决定使用我自己的代码,看看我是否可以遵循而不是使用他们的代码。
目前我理解的Controller对应的views:
# In my controller
def index
@x = "I love Ruby"
end
在我看来 (index.html.erb)
<% = @x %> #=> I love Ruby
对于索引页来说,这个简单的事情就可以了。现在如果想在该视图的索引中引用其他方法调用怎么办?在控制器中:
def index
@x = "I love Ruby"
end
仍在控制器内 class:
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"
如何调用网页中的方法名?
您在这里要做的是访问视图中的控制器方法。当你这样做时,控制器方法被访问,就好像它是一个 helper 方法一样。通常控制器方法不能以这种方式使用,但您可以告诉控制器将它们作为助手提供。
见http://apidock.com/rails/ActionController/Helpers/ClassMethods/helper_method
顺便说一句,当控制器中的方法不是 actions,即不对应 route/url 时,您应该将它们放在 protected
部分,按照惯例位于控制器的底部。这让 rails 和 reader 明白它们不是行动。
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}" %>
根据 rails 惯例,您必须使用 Helpers。另一种方法是在渲染模板时使用局部变量。
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}!%>