Ruby on Rails的未定义局部变量或方法`profile'

时间:2016-07-23 17:45:31

标签: ruby-on-rails ruby

在我的静态页面home.html.erb中,我有一个StaticPagesController的引用。我相信我正确地做了这个,但仍然得到未定义的局部变量或方法`profile'。

StaticPagesController

class StaticPagesController < ApplicationController

    def profile
        redirect_to profile_path(current_user)
    end 
end

home.html.erb     

<% if logged_in? %>
    <% profile %>
<% else %>
    <h1>Welcome to myProjects</h1>
    <%= link_to "Sign up!", signup_path, class: "btn btn-lg btn-primary" %>
<% end %>

2 个答案:

答案 0 :(得分:0)

我认为您正在尝试从视图中访问控制器中定义的方法。对不起,但是,这是不可能的。使用MVC,您无法像这样触发控制器中的方法。理想情况下,您应该在app / helpers / application_helper.rb或app / helpers / static_pages_helper.rb下定义一个帮助方法。试图以你的方式访问它会导致你看到的错误。

答案 1 :(得分:0)

您需要将def profile作为辅助方法,因此可以使用此方法进行查看。只需在def profile方法下方添加以下一行:

 helper_method :profile

你的最后一堂课将如下所示:

 class StaticPagesController < ApplicationController

    def profile
      redirect_to profile_path(current_user)
    end 

    helper_method :profile
  end