Tag: ruby on rails 4

Rails渲染json包括带参数的方法

我在方法控制器中有这个渲染: render :json => @boats, :include => {:port => {:only => [:id, :name], :include => {:city => {:only => [:id, :name], :methods => :translatedCity}}}} 但是模型中的translatedCity方法应该接受语言参数。 def translatedCity language = params[:language] puts “translatedCity.language=” + language city = TranslationService.translateCity(self.city_id, language) return city.element_translation end 我在控制器中有参数。 有没有办法将此参数传递给模型中的方法?

Rails 4 ajax在引导选项卡中加载内容

我有同样的问题,如本文所述。 但是,我仍然觉得难以理解解决方案。 风景: / Nav tabs %ul.nav.nav-tabs %li.active =link_to “Tab1”, “#tab1”, html_options = { “data-toggle” => “tab” } %li =link_to “Tab2”, “#tab2”, html_options = { “data-toggle” => “tab” } %li =link_to “Tab3”, “#tab3”, html_options = { “data-toggle” => “tab” } / Tab panes .tab-content .tab-pane.active#tab1 %p Fetch content .tab-pane.active#tab2 %ul.nav.nav-pills %li.active= link_to ‘Overview’, “#overview”, html_options […]

如何在Rails中的注册表单中创建Devise用户时创建另一个对象?

我的系统中有不同类型的用户。 一种是,比方说,设计师: class Designer < ActiveRecord::Base attr_accessible :user_id, :portfolio_id, :some_designer_specific_field belongs_to :user belongs_to :portfolio end 这是在用户注册时立即创建的。 因此,当用户填写sign_up表单时,将创建一个Devise User以及此Designer对象,并将其user_id设置为创建的新User 。 如果我可以访问控制器的代码,这很容易。 但是对于Devise,我无法访问此注册控制器。 注册后创建User和Designer的正确方法是什么?

具有连接和顺序的独特记录

我在User和Donations之间有一个简单的关系,即用户有很多捐赠,捐赠属于用户。 我想做的是获取最近捐赠订购的用户列表。 这是我正在尝试的: 首先,我想获得uniq用户的总数,这是按预期工作的: > User.joins(:donations).order(‘donations.created_at’).uniq.count (3.2ms) SELECT DISTINCT COUNT(DISTINCT “users”.”id”) FROM “users” INNER JOIN “donations” ON “donations”.”user_id” = “users”.”id” => 384 接下来,当我删除count方法时,出现“ORDER BY表达式必须出现在选择列表中”的错误: > User.joins(:donations).order(‘donations.created_at’).uniq User Load (0.9ms) SELECT DISTINCT “users”.* FROM “users” INNER JOIN “donations” ON “donations”.”user_id” = “users”.”id” ORDER BY donations.created_at PG::InvalidColumnReference: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in […]

Rails4:image_url不在scss中生成摘要

我无法理解为什么我的css文件没有使用辅助方法image_url将摘要附加到我的资产 我的资产是正确预先推荐的,文件确实包含摘要。 我也可以手动访问它们(使用消化的URL)。 最奇怪的是,它一开始就有效。 这是我的配置: config.assets.js_compressor = :uglifier config.assets.compile = false config.assets.digest = true config.assets.version = ‘1.0’ config.serve_static_assets = false #also tried true 这是我的application.css:* = require_tree。 这是common.scss文件,用于包含图像: body{ background: image_url(‘bg.jpg’); font-family: ‘Lato’, sans-serif; overflow-x: hidden; } 图像以及样式表位于资产/图像和资产/样式表中的子文件夹中。 在这里我的gem: gem ‘rails’, ‘4.0.0’ gem ‘sass-rails’, ‘~> 4.0.0’ 我正在使用capistrano进行部署,但我不认为这是一个与capistrano相关的问题,资产编制得很好。 编辑到目前为止我(尝试失败)的尝试: image-url(‘image.jpg’); -> http://sofzh.miximages.com/ruby-on-rails/image.jpg image_url(‘image.jpg’); -> same as above […]

绝对坚持尝试使用has_many来创建railsforms的嵌套关联

我之前发布了一个关于此的问题,并被建议阅读大量相关信息。 我已阅读并尝试实施约30种不同的解决方案。 这些都不适合我。 这就是我所拥有的。 我有一个Miniatures模型。 我有制造商型号。 Miniatures有许多制造商通过Productions模型。 这些关联似乎设置正确,因为我可以在我的视图中显示它们并通过控制台创建它们。 我遇到问题的方法是让Miniatures NEW和EDIT视图创建并更新到Productions表。 在控制台中,命令@miniature.productions.create(manufacturer_id: 1)起作用,这使我相信我应该能够在表单中执行相同的操作。 我认为我的问题总是在Miniatures Controller中,特别是CREATE函数。 我在那里尝试了很多其他人的解决方案,没有人能做到这一点。 我的field_forforms也可能是错误的,但这似乎不那么繁琐。 我已经坚持了几天,虽然还有其他我可以继续工作的事情,如果这种关联不可能,那么我需要重新考虑我的整个应用程序。 表单现在在Productions表中创建一行,但不包括所有重要的manufacturer_id。 任何帮助非常感谢。 我的新微缩forms Add a miniature Date.current.year, :end_year => 1970, :include_blank => true %> 微型控制器 class MiniaturesController < ApplicationController before_action :signed_in_user, only: [:new, :create, :edit, :update] before_action :admin_user, only: :destroy def productions @production = @miniature.productions end def show […]

ActiveModel :: ForbiddenAttributesError – Rails 4

我有点迷茫。 我得到了Rails 4错误:ActiveModel :: ForbiddenAttributesError。 我明白这意味着我需要允许物品通过,我已经完成了,但我必须遗漏一些东西。 评论控制器: class CommentsController < ApplicationController def create @post = Post.find(params[:post_id]) @comment = @post.comments.create!(params[:comment]) redirect_to @post end private # Never trust parameters from the scary internet, only allow the white list through. def comment_params params.require(:comment).permit(:post_id, :comment, :body) end end 创建评论迁移 class CreateComments < ActiveRecord::Migration def change create_table :comments do |t| […]

Rails validates_presense没有在布尔值上validation?

所以,我有一个表单,使用布尔值来选择男性或女性。 当我使用validates:presense为布尔字段时,它返回,性别不能为空! 我删除了validation部分,它允许它以真或假的方式传入DB。 它没有留下零。 我假设这是一个问题,因为我使用t / f,但我似乎无法弄清楚为什么。 这是我的模特 class Visit < ActiveRecord::Base validates :user_id, :first_name, :last_name, :birthdate, :gender, presence: true end 我对这个领域的看法 false, label: “Gender” %>

依赖性破坏不起作用

我试图使用依赖::破坏但没有成功。 让我们举一个简单的例子。 我用以下内容创建一个简单的应用程序: rails g model parent rails g model child parent:references 将以下行添加到parent.rb has_many :children, dependent: :destroy 我在rails console(rails c)中进行了以下测试 p = Parent.create! c = Child.create! c.parent = p c.save #check association Child.first == Child.first.parent.children.first p.delete #This should return 0 Child.count == 0 而Child.count返回1。 我错过了什么? 谢谢

Rails 4:如果没有指定HTTP方法,则不应在路由器中使用`match`方法

好的,所以我已经升级到Rails 4(与我的10.9服务器更新有点计划外)并且能够在我的照片库应用程序上运行除路由之外的所有内容。 由于某些原因,我一直无法理解路由,因为rails 3.这是我之前在Rails 3下的工作代码 root :to => “gallery#index”, :as => “gallery” get ‘gallery’ => ‘gallery#index’ resources :galleries match ‘gallery_:id’ => ‘gallery#show’, :as => ‘gallery’ 我知道匹配已被折旧,但如果我尝试使用GET,我会收到以下错误: 已使用的路径名无效:’gallery’您可能使用:as选项定义了两个具有相同名称的路由,或者您可能覆盖已由具有相同命名的资源定义的路由。 基本上,我希望根(索引)加载为“/ photos / gallery”,然后加载我的show动作,例如,将id 435记录为:“/ photos / gallery_435”这就是我以前的方式工作。 对不起,这可能是一个简单的问题,我似乎无法掌握rails路由。