Tag: ruby on rails

用于创建ajax关系的关系控制器-NoMethodError:未定义的方法` _url’

我相信我的控制器中的redirect_to出现问题。 课程有很多级别,有很多步骤(步骤属于级别,级别属于课程)。 我正在尝试重定向到该步骤。 这是我迈出一步的路线: /courses/:course_id/levels/:level_id/steps/:id(.:format) 这是我在控制器中的错误: Failure/Error: click_button “check answer” NoMethodError: undefined method `step_url’ for # 这是发生错误的控制器: class UserStepsController < ApplicationController before_filter :authenticate_user! def create @step = Step.find(params[:user_step][:step_id]) current_user.attempt_step!(@step) respond_to do |format| format.html { redirect_to @step } format.js end end def destroy @step = UserStep.find(params[:id]).step current_user.remove_user_step!(@step) respond_to do |format| format.html { redirect_to @step } format.js […]

订阅会话中的消息 – rails

我正在使用一个名为mailboxer的gem来允许用户在彼此之间发送消息: 这是我在对话控制器中的内容: class ConversationsController < ApplicationController … private def mailbox @mailbox ||= current_user.mailbox end def conversation @conversation ||= mailbox.conversations.find(params[:id]) end def conversation_params(*keys) fetch_params(:conversation, *keys) end def message_params(*keys) fetch_params(:message, *keys) end def fetch_params(key, *subkeys) params[key].instance_eval do case subkeys.size when 0 then self when 1 then self[subkeys.first] else subkeys.map{|k| self[k] } end end end end 这就是我在对话中所看到的观点: 哪个有效,但消息都是乱码。 […]

使用acts_as_taggable_on为标记创建url slugs

我想为由acts_as_taggable_on gem管理的标签创建url slugs。 例如,我想http://myapp.com/tags/my-tag (其中’我的标签’是标签的唯一名称),而不是像http://myapp.com/tags/5这样的url。 在我自己创建的模型中,我通常通过覆盖模型的to_param方法,并在模型中创建“slug”字段来保存新的to_param方法的结果。 我尝试使用ActsAsTaggableOn的Tag模型执行此操作,但它不起作用。 我可以覆盖ActsAsTaggableOn的tag.rb类中的内容,如下所示: # Overwrite tag class ActsAsTaggableOn::Tag.class_eval do def name n = read_attribute(:name).split n.each {|word| word.capitalize!}.join(” “) end end 但是,如果我尝试使用如下方法定义覆盖同一块中的to_param方法: def to_param name.parameterize end Rails仍然生成并响应具有整数ID的路由,而不是参数化名称。 事实上在控制台,如果我尝试类似的东西 ActsAsTaggableOn::Tag.find(1).to_param 返回整数ID,而不是重写的to_param方法的结果。 我宁愿不分叉gem并自定义它,如果有任何方法我可以使用我自己的应用程序代码。 谢谢。

检查收集function中的nil值

我有一系列哈希,如下所示。 说我的数组是@fruits_list: [ {:key_1=>15, :key_2=>”Apple”}, {:key_1=>16, :key_2 =>”Orange”}, {:key_1=>17, :key_2 =>” “} ] 我想使用’|’加入哈希值中的值; 但我的最终输出不应包含零值。 我使用以下方法连接: @fruits_list.collect { |hsh| hsh[:key_2] }.join(“|”) 但是这在我的输出中增加了nil,所以我的最终输出有3个项目{“Apple”| “橙色”| “”}。 我想在我的列表中有两个项目,并希望消除零值,所以我的最终输出应该看起来像{“Apple”| “橙子”}。 我试过了: @fruits_list.collect { |hsh| hsh[:key_2] unless hsh[:key_2].nil? }.join(“|”) @fruits_list.collect { |hsh| hsh[:key_2] unless hsh[:key_2].nil? }.join(“|”) @fruits_list.collect { |hsh| hsh[:key_2] unless hsh[:key_2].nil? }.join(“|”)但是这甚至会在最终输出中返回3个项目。 我做错了什么或如何消除零值?

连接集必须包含所有值但可能包含更多值的SQL

我有三个表格, sports和offers_sports表offers_sports 。 class Offer < ActiveRecord::Base has_and_belongs_to_many :sports end class Sport < ActiveRecord::Base has_and_belongs_to_many :offers end 我想选择包含一系列运动名称的优惠。 他们必须包含所有的sports但可能有更多。 让我们说我有这三个优惠: light: – “Yoga” – “Bodyboarding” medium: – “Yoga” – “Bodyboarding” – “Surfing” all: – “Yoga” – “Bodyboarding” – “Surfing” – “Parasailing” – “Skydiving” 鉴于arrays[“Bodyboarding”, “Surfing”]我想要得到medium而不是light 。 我尝试过这个答案,但结果是零行: Offer.joins(:sports) .where(sports: { name: [“Bodyboarding”, “Surfing”] }) .group(“sports.name”) […]

ExecJS :: ProgramError:意外字符’#’

我正在尝试部署到Heroku,我遇到了这个错误。 我做了一些研究,并在查看相关post后尝试卸载并重新安装了一些gem,但我不确定这里有什么问题,因为我不熟悉实际问题。 请帮忙! 我该怎么办? 到目前为止,我认为它与jquery有关。 ExecJS::ProgramError: Unexpected character ‘#’ (line: 13912, col: 0, pos: 394110) remote: Error remote: at new JS_Parse_Error (/tmp/execjs20150204-1143-zrnj29js:2359:10623) remote: at js_error (/tmp/execjs20150204-1143-zrnj29js:2359:10842) remote: at parse_error (/tmp/execjs20150204-1143-zrnj29js:2359:12560) remote: at Object.next_token [as input] (/tmp/execjs20150204-1143-zrnj29js:2359:17582) remote: at next (/tmp/execjs20150204-1143-zrnj29js:2359:18900) remote: at semicolon (/tmp/execjs20150204-1143-zrnj29js:2359:19745) remote: at simple_statement (/tmp/execjs20150204-1143-zrnj29js:2359:22580) remote: at /tmp/execjs20150204-1143-zrnj29js:2359:20708 remote: at /tmp/execjs20150204-1143-zrnj29js:2359:19957 remote: […]

Rails 4 / ajax – NoMethodError – nil的未定义方法`id’:NilClass – 将变量传递给js模态

我有一个非常简单的Ruby On Rails应用程序,前端有bootstrap 3:我有交易,每个交易都有很多机会。 在每个交易页面(交易页面的url是例如myapp.com/id=1),我希望有一个文本链接,显示“查看交易的机会”,单击时,它会在单击Bootstrap中的内容时触发模态。 我搞得一团糟,因为在这个Deal Page上,我使用了Deal的控制器动作“showcase”。 但是要通过ajax生成模态,如下所示,我使用另一个名为“show_opportunities”的动作,在其中,应用程序似乎不知道@deal(因为@ deal是在不同的Deal的动作中定义的)。 我认为问题出现的地方,但我不完全确定。 这是我得到的错误和我的代码: Completed 404 Not Found in 3ms ActiveRecord::RecordNotFound – Couldn’t find Deal without an ID: activerecord (4.2.0) lib/active_record/relation/finder_methods.rb:433:in `find_with_ids’ activerecord (4.2.0) lib/active_record/relation/finder_methods.rb:71:in `find’ friendly_id (5.1.0) lib/friendly_id/finder_methods.rb:20:in `find’ app/controllers/deals_controller.rb:70:in `show_opportunities’ 这行70,错误是“@deal = Deal.friendly.find(params [:id])”(见下文) controller/deals_controller.rb (using @Pavan feedback) # used so that old urls created for […]

Rails数据库默认值和布尔字段的模型validation

在Rails模型中,我有一个属性is_subscriber ,当我构建一个db迁移以将此列添加到数据库时,我将默认值指定为false: t.boolean “is_subscriber”, :default => false 我还在模型中指定需要存在此属性: validates :is_subscriber, presence: true 那么为什么在创建模型实例时却没有指定此属性会出现此错误? 2012-05-08T21:05:54+00:00 app[web.1]: ActiveRecord::RecordInvalid (Validation failed: Is subscriber can’t be blank):

Rails heroku帮助kaminari查看错误

由于kaminari,我的heroku日志中出现错误。 pagnation不能在我的本地电脑上运行。 这是我的日志: I@PC /c/rails/myapp (master) $ heroku logs 2011-05-04T12:24:15-07:00 heroku[web.1]: State changed from created to starting 2011-05-04T12:24:15-07:00 heroku[slugc]: Slug compilation finished 2011-05-04T19:24:16+00:00 app[web.1]: >> Stopping … 2011-05-04T19:24:24+00:00 app[web.1]: >> Thin web server (v1.2.6 codename Crazy Delicious) 2011-05-04T19:24:24+00:00 app[web.1]: >> Maximum connections set to 1024 2011-05-04T19:24:24+00:00 app[web.1]: >> Listening on 0.0.0.0:47387, CTRL+C to s top […]

如何在Rails中发送简单的json响应?

我需要发送json响应取决于用户在输入中输入的数据,但是我没有发送简单的json请求。 我按照这篇文章 – http://paydrotalks.com/posts/45-standard-json-response-for-rails-and-jquery 。 添加了MimeType: Mime::Type.register_alias “application/json”, :jsonr, %w( text/x-json ) 在我的控制器中: def checkname respond_to do |format| format.jsonr do render :json => { :status => :ok, :message => “Success!”, :html => “congrats” }.to_json end end end 但是屏幕是空的,当我组成对此操作的GET响应时,这里是来自fiddler2的响应代码: HTTP/1.1 406 Not Acceptable Content-Type: text/html; charset=utf-8 X-UA-Compatible: IE=Edge Cache-Control: no-cache X-Request-Id: 14a8467908d9ce322d054607efdacf92 X-Runtime: 0.011000 Content-Length: 1 […]