全站方法

时间:2014-07-15 14:11:15

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

我为我的网站创建了一个浮动的,始终存在的反馈按钮,该按钮使用magnific-popup启动弹出窗体。

它随处可见,但我不知道在哪里放置构建方法,以便创建Feedback对象。

我可以把它放到控制器中使它工作:

@feedback = current_user.feedbacks.build

但我当然不必将其添加到每个控制器中?

我可以把它放在applications_controller中吗?如果是这样我该怎么称呼这个方法?

在我的feedbacks_controller中,我有

def create
        @feedback = current_user.feedbacks.build(feedback_params)
        if @feedback.save
            flash[:success] = "Feedback fed back!"
            redirect_to :back
        end
end

    private

        def feedback_params
            params.require(:feedback).permit(:user_id, :nature, :content, :url, :status)
        end

1 个答案:

答案 0 :(得分:3)

您可以在before_action :set_feedback

中添加application_controller.rb
def set_feedback
    @feedback = current_user.feedbacks.build
end

这应该可以解决问题。它将在所有控制器中调用。

为了及时了解当前版本的rails,before_filter现在称为before_action

此外,正如评论中所指出的,您可以使用控制器中的skip_before_action跳过过滤器,您无需设置@feedback

所有控制器回调都在APIDock中描述:http://apidock.com/rails/v4.0.2/AbstractController/Callbacks/ClassMethods/skip_before_action