Tag: 模型 视图 控制器

类的最高级别不匹配CommentsController(TypeError),重命名的最佳方法是什么?

今晚我在部署时遇到了一些问题,我正试图尽快解决这个问题 我不知道为什么会这样。 一切都在本地很好,但不是在heroku上。 我在研究之后尝试了各种不同的修复方法,但我可能不得不完全重命名这个类的CommentsController(希望这很有效)。 最好的方法是什么? 我是Rails的新手,所以我需要一些帮助才能正确地改变它们。 以下是CommentsController看起来像FYI的内容: class CommentsController < ApplicationController def new @post = Post.new(params[:post]) end def show @comment = Comment.find(params[:id]) respond_to do |format| format.js end end def create @post = Post.find(params[:post_id]) @comment = Comment.new(params[:comment]) @comment.micropost = @post @comment.user = current_user if @comment.save redirect_to(:back) else render partial: 'shared/_comment_form', locals: { post: @post } end […]

Ruby App MVC框架(不是web)

有没有人听说过适用于Apps / Scripts的Ruby MVC框架? 当Rails出现时 – 它是一个革命性的工具,因为它将MVC带给了大量的Web开发人员,并且曾经迫使他们使用设计模式和约定。 我正在寻找类似的东西,但是要编写从cron或用户运行的平凡管理任务:更新,备份,管理工具箱等。现在我确信每个人都有自己喜欢的方式来设置他们的应用程序和工具箱,但我想知道是否有MVC的做事方式。 一些会迫使我使用设计模式和惯例的东西(我很有罪,就像我确定其他人一样,偶尔使用快捷方式)。 现在我尝试了narf和bowline – 但我认为narf被抛弃了,而bowline则面向GUI并处于早期alpha状态。 根据我想澄清的反馈:当你开始一个新的网络应用程序 – 无论多小 – 你将使用ruby或merb或ramaze或你有什么。 您这样做是为了能够使用这些框架中的所有好东西和最佳实践。 当然,您可以编写自己的servlets器和一个文件Web应用程序,但为什么呢? 所以我想知道是否有类似于应用程序/脚本的框架。 那么有人有任何建议吗? 评论下面的一些评论: @Michael:我之前看过厨师和木偶,两者都很好但是 – 他们更多的是自动化设置任务,而不是编写应用程序。 @mansu:我不想取代Cron或计划任务 – 他们已经做好了。 我只是希望他们运行我的MVC脚本。 @Robert:Anvil听起来被抛弃 – 最后一次更新是从2007年开始的,它适合作为GUI框架。 我不认为这是一种矫枉过正 – 原因是我现在有大约40个脚本使用(从客户csv更新数据到mysql,运行备份,在ftp上运行脚本等)我确信它必将成长。 我意识到的是我的一些脚本做了同样的事情 – 比如将数据从csv更新到mysql,所以我重构了我的代码以使用一个使用配置文件的公共库。 所以我认为这不是一种矫枉过正。 我只是想知道是否已有一个框架。 @mereghost:从GUI的角度来看,RuGUI非常有趣,值得进一步调查。 似乎积极维护。 我会看看我是否可以使用它,或者我是否可以根据它开发一些东西。 @bantic:不确定我是怎么错过Thor的 – 我不时检查Katz的博客。 它有点像我正在寻找的东西,但在某种意义上它并不是很适合用一堆选项开发一个工具,即复制命令和一堆关于如何复制的参数。 我想要的东西更多的是一个有很多任务的应用程序。 @Chuck:Chuck,我的想法几乎一样,直到我开始编写更新DB的脚本。 所以在这个意义上我确实有M部分MVC,如果不是视图。 您可能会争辩说我只有一个视图 – 控制台,或者我甚至有多个 – 让我们说我的脚本需要每天运行并在共享上更新一些.xls文件,但也将其输出为csv,也许是tsv文件,并能够为客户服务消费做xml。 […]

使用Rails助手来渲染部分

根据我的理解,帮助程序主要用于从某些特定于视图的逻辑中清除视图。 但是在我目前的新项目(遗留应用程序)中,我偶然发现了许多看起来像这样的帮助程序 def itemprepare render :partial => ‘items/itemlist_summary’ end 它是否正确? 渲染部分给我似乎是你想在视图中做的事情,因为它不包括任何需要抽象的逻辑。 我应该只是内联所有这些助手吗?

ActionMailer最佳实践:模型或控制器中的调用方法?

通常在对模型执行操作后调用发送电子邮件,但电子邮件本身是查看操作。 我正在寻找你如何思考哪些问题要问自己确定动作邮件方法调用的位置。 我见过/使用过它们: 在模型方法中 – 相关但单独关注的错误耦合? 在模型的回调中(例如after_save) – 就我目前的知识水平而言,最好的分离。 在控制器操作中 – 只是感觉不对,但有没有情况这是构建代码的最明智的方法? 如果我想知道如何编程我需要像程序员一样思考,那么学习如何通过特定的编程解决方案进行思考就值得花几个月独立编码。 谢谢!

使用多个JSON渲染进行响应。 (ruby/ Rails)的

这是一个相对简单的,我很确定它只是语法。 我试图将多个对象渲染为json作为控制器中的响应。 所以这样的事情: def info @allWebsites = Website.all @allPages = Page.all @allElementTypes = ElementType.all @allElementData = ElementData.all respond_to do |format| format.json{render :json => @allWebsites} format.json{render :json =>@allPages} format.json{render :json =>@allElementTypes} format.json{render :json =>@allElementData} end end end 问题是我只得到一个json,它总是最顶层的。 有没有办法以这种方式渲染多个对象? 或者我应该创建一个由其他objects.to_json组成的新对象?

如何进行私人活动?

我们如何为用户提供将活动设为私有的选项? 这将为用户提供他们想要的post的隐私权。 这是我的一次尝试,它给了我: NoMethodError in ActivitiesController#index undefined method ‘public_activities’ @activities = Activity.public_activities.order(“created_at desc”).where(current_user.following_ids) NoMethodError in ActivitiesController#index undefined method ‘public_activities’为行: @activities = Activity.public_activities.order(“created_at desc”).where(current_user.following_ids) class ActivitiesController < ApplicationController def index #Added .public_activities @activities = Activity.public_activities.order("created_at desc").where(user_id: current_user.following_ids) end end class Activity < ActiveRecord::Base belongs_to :user has_many :comments, as: :commentable belongs_to :trackable, polymorphic: true def public? !private […]

两个控制器,用于Ruby on Rails中的一个共享视图

我有两个控制器用于两个相应的模型,例如照片和类别。 index和show方法在每个控制器中非常相似,并且视图是相同的。 两个模型分享视图的最佳方法是什么? 我有两个选择: 使用帮助器。 在帮助器中将放置视图的代码,并将从每个视图调用帮助器(照片/视图和类别/视图) 在每个视图中使用partial。 我认为这是一个更干净的解决方案,但在我编写这个解决方案时,我会在脑海中看到巨大的DRY。 所以,我有两个模型的两个控制器,每个控制器都有一个@photo对象(照片控制器包含所有照片,类别控制器只有所选类别的照片),我需要一个视图来显示两者。 我正在寻找一个优雅的解决方案,抱怨REST和DRY原则。 任何的想法? 提前致谢。

如何在会话中存储nil用户的目标?

如何在会话中保存用户的目标? 然后,一旦他注册,保存该目标并从会话中删除它? 在主页上它看起来像这样: 目标/ _form.html.erb 单击提交后,应将nil用户的目标添加到他的会话中,然后将其重定向到注册页面,然后将其注册目标添加到他新创建的帐户中。 goals_controller def create @goal = params[:user] ? current_user.goals.build(goal_params) : Goal.new(goal_params) if params[:session][:name][:deadline] session[:name][:deadline] = params[:session][:name][:deadline] redirect_to signup_url elsif @goal.save track_activity @goal redirect_to @goal, notice: ‘Goal was successfully created’ else flash.now[:danger] = ‘Required Field: “Enter Goal”‘ render ‘new’ end end 现在如果我点击提交作为nil用户我得到: NoMethodError in GoalsController#create undefined method `[]’ for nil:NilClass for […]

如何使用Ruby on Rails将数据从控制器传递到模型?

如何将数据从控制器传递到模型? 在我的application_controller我获取用户的位置(州和城市)并包含一个before_filter ,以便通过所有控制器访问它 before_filter :community def community @city = request.location.city @state = request.location.state @community = @city+@state end 然后我尝试通过以下方法将控制器中检索到的数据添加到模型中: before_save :add_community def add_community self.community = @community end 但是,数据从未从控制器传递到模型。 如果我使用: def add_community @city = request.location.city @state = request.location.state @community = @city+@state self.community = @community end request.location.city和request.location.state方法不能从模型中运行。 我知道其他一切都有效,因为如果我将@city和@state定义为字符串,在def_community下,那么一切正常,除了我没有动态变量,只是放在模型中的字符串。 此外,我知道请求在控制器/视图中工作,因为我可以让它们显示正确的动态信息。 问题只是将数据从控制器传递到模型。 非常感谢你的时间。