Rails 4:控制器和模型的内容是什么?

时间:2015-02-13 10:57:30

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

我一直在阅读和观看有关学习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”

如何在网页中调用方法名称?

3 个答案:

答案 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}!%>