我为我的网站创建了一个浮动的,始终存在的反馈按钮,该按钮使用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
答案 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