我们能否从视图调用 Controller 的方法(理想情况下从 helper 调用) ?

在 Rails MVC 中,是否可以从视图调用控制器的方法(就像方法可以从 helper 调用一样) ?如果是,怎么做?

75815 次浏览

Haven't ever tried this, but calling public methods is similar to:

@controller.public_method

and private methods:

@controller.send("private_method", args)

See more details here

You possibly want to declare your method as a "helper_method", or alternatively move it to a helper.

What do helper and helper_method do?

Here is the answer:

class MyController < ApplicationController
def my_method
# Lots of stuff
end
helper_method :my_method
end

Then, in your view, you can reference it in ERB exactly how you expect with <% or <%=:

<% my_method %>

make your action helper method using helper_method :your_action_name

class ApplicationController < ActionController::Base
def foo
# your foo logic
end
helper_method :foo


def bar
# your bar logic
end
helper_method :bar
end

Or you can also make all actions as your helper method using: helper :all

 class ApplicationController < ActionController::Base
helper :all


def foo
# your foo logic
end


def bar
# your bar logic
end
end

In both cases, you can access foo and bar from all controllers.