小编ard*_*igh的帖子

如何从佣金路线中排除引擎路线

我有一个引擎(社交流)安装到我的Rails应用程序中.当我运行rake路线时,我得到所有路线,包括已安装的引擎路线.这很有用,但有很多路线.

有没有办法运行rake路由,所以它只返回父应用程序的路由,而不是引擎?我仍然希望能够为引擎运行.

routes ruby-on-rails

2
推荐指数
1
解决办法
2161
查看次数

解码Cryptic Python语句

我在工作广告上看到了这个(在SO上):

lambda f: (lambda a: a(a))(lambda b: f(lambda *args: b(b)(*args)))
Run Code Online (Sandbox Code Playgroud)

所以我理解的是它是一个匿名(未命名)函数,它由两个进一步嵌套的匿名函数组成.最里面的函数采用变量的争论列表(*args).

我无法弄清楚它应该做什么.如果没有看到实际的args列表,这实际上是否有效或无法分辨?

python

2
推荐指数
2
解决办法
628
查看次数

将github wiki链接到主干代码

在Github wiki中,可以嵌入代码.是否可以通过wiki的repo中的文件名(和行号?)链接到源代码?

理想情况下,如果稍​​后删除引用的文件,也会显示某种类型的错误.

我看了这些问题,但是他们没有涉及到:

链接到GitHub上的其他Wiki页面?

GitHub从Issue到Wiki的链接

github

2
推荐指数
1
解决办法
2228
查看次数

将0.0.0.0添加到/ etc / hosts

我在一些Rails安装指南中看到了类似的内容。我们在这里到底在做什么?

将默认子域添加到/ etc / hosts,例如:“ 0.0.0.0 localhost.lan group1.localhost.lan group2.localhost.lan”

ruby-on-rails

1
推荐指数
2
解决办法
2971
查看次数

collection_select可以用于对抗yaml文件吗?

我的Rails应用程序当前使用collection_select来选择下拉等的查找值.这有两个好处:

  1. 值是一致的
  2. 所选值的id存储在数据库中,而不是文本值

例如:edit.html.erb

<div class="field">
  <%= f.label :course_type %><br />
  <%= f.collection_select :course_type, Lookup.find(:all,:conditions => ["model_name = 'course' and field_name = 'course_type'"]), :id, :lookup_text, include_blank: false,:prompt => "Course Type" %>
</div>
Run Code Online (Sandbox Code Playgroud)

course_controller.rb

private
  def get_lookups
    @course = Course.find(params[:id])
    @course_type = Lookup.find(@course.course_type).lookup_text
Run Code Online (Sandbox Code Playgroud)

show.html.erb

<b>Course type:</b>
<%= @course_type %>
Run Code Online (Sandbox Code Playgroud)

我的应用程序将是多语言的,Rails通过使用区域设置文件来处理这个问题.

问题是:是否可以(并且明智地)从yml文件而不是模型/表中填充查找值,并且可以轻松扩展以处理多种语言吗?如何用基于yml的代码替换上面的代码?

yaml ruby-on-rails internationalization

1
推荐指数
1
解决办法
1758
查看次数

使用send更新ActiveRecord

我正在迭代一个哈希,如果哈希键匹配列名(由attr_accessible定义),那么我想更新该列.

def self.load_primer3_output(rawfile_hash)
  primer3_output = Primer3Output.new
  rawfile_hash.each do |key, value|
    if primer3_output.class.accessible_attributes.include?(key)
      primer3_output.send(key) = value
    end
  end
  primer3_output.save
end
Run Code Online (Sandbox Code Playgroud)

我在发送时遇到语法错误:

** [out :: 192.241.193.126]     /home/assay/apps/assay/releases/20130823054701/app/workers/primer3_query.rb:96: syntax error, unexpected '=', expecting keyword_end
** [out :: 192.241.193.126] (
** [out :: 192.241.193.126] SyntaxError
** [out :: 192.241.193.126] )
** [out :: 192.241.193.126]
** [out :: 192.241.193.126] primer3_output.send(key) = value
** [out :: 192.241.193.126]
** [out :: 192.241.193.126] ^
Run Code Online (Sandbox Code Playgroud)

编辑

顺便说一句,eval是有效的.我宁愿使用发送.

if primer3_output.class.accessible_attributes.include?(key)
    #primer3_output.send(key) = value
    eval("primer3_output.#{key} = value")
end
Run Code Online (Sandbox Code Playgroud)

ruby metaprogramming ruby-on-rails

1
推荐指数
1
解决办法
170
查看次数

自动对焦无法在导轨中工作

我的Rails应用程序中有一个按钮,并希望将其设置为自动对焦,因此用户只需按Enter即可在页面加载时继续.

下面的代码不起作用:该按钮正在工作,但未设置为自动对焦.

<%= link_to new_flashcard_flashcard_test_path(@flashcard_deck.next_flashcard), :class => 'btn btn-primary', :autofocus => true do %>
      <span class="glyphicon glyphicon-link"></span>
      Next card
<% end %>
Run Code Online (Sandbox Code Playgroud)

生成的HTML

<a autofocus="autofocus" class="btn btn-primary" href="/flashcards/1188/flashcard_tests/new">
  <span class="glyphicon glyphicon-link"></span>
  Next card
</a>
Run Code Online (Sandbox Code Playgroud)

html5 ruby-on-rails

1
推荐指数
1
解决办法
826
查看次数

元编程Ruby便捷方法

在我的程序中,我使用状态机,并有许多方便的方法.我目前正在创建一个很长的"?"列表 模型中的方法.

def purchase_ready?
    self.current_state == 'purchase_ready'
end

def completed?
    self.current_state == 'completed'
end

def region_prepared?
   self.current_state == 'region_prepared'
end
Run Code Online (Sandbox Code Playgroud)

什么是元编程方式呢?

ruby metaprogramming

1
推荐指数
1
解决办法
90
查看次数

简单模式有效值列表

我正在使用简单架构,我想有一种方法可以根据预定义列表或其他字段来验证某些字段中的值

针对未更改的预定义列表(例如枚举)进行验证。可以使用复杂的正则表达式来完成此操作,但这感觉不对:

dialogType: {
   type: String,
   label: "Dialog Type",   // 'article', 'sentence','exercise','lesson','word'
   optional: false
},
Run Code Online (Sandbox Code Playgroud)

针对用户集合进行验证,可能会应用某些过滤器:

userId: {
    type: String,
    label: "User ID",
    optional: false
 } 
Run Code Online (Sandbox Code Playgroud)

一个相关问题 以简单模式将allowedValues绑定到集合中的值

meteor simple-schema

1
推荐指数
1
解决办法
1397
查看次数

Rails 5.2 ActionController :: InvalidAuthenticityToken

升级到Rails 5.2之后,我开始对应用程序中的所有表单都收到一个ActionController :: InvalidAuthenticityToken错误。我通过禁用所有形式的Turbolink来解决此问题,这种方法虽然有效,但不是很好的解决方案。

搜寻互联网,推荐的常见解决方案似乎是禁用protect_from_forgery

skip_before_action :verify_authenticity_token, raise: false

为什么我们需要禁用protect_from_forgery,而这不会产生安全漏洞?

编辑

csrf_meta_tags 在布局中。

在此处输入图片说明

ruby-on-rails csrf

1
推荐指数
1
解决办法
1758
查看次数

使用 Module#prepend 查询 str_enum

我有一个 Rails 模型,它使用str_enum gem。

我正在构建一个生成器,它读取模型并为它们创建页面,因此我希望能够了解str_enum附加到模型的内容。

例如

class User < ApplicationRecord
  str_enum :email_frequency, %i[every daily weekly], default: 'every'
end
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望能够查询User模型并了解str_enum附加到email_frequency,其值为every, daily& weekly

一旦我能理解str_enum给定字段附加了一个,我就可以将该字段复数化并获取值:

irb(main):004:0> User.email_frequencies
=> ["every", "daily", "weekly"]
Run Code Online (Sandbox Code Playgroud)

这里也有人问这个问题,建议使用Module#prepend. 我熟悉prepend有条件地将方法插入模型中。

我该如何使用它来解决这个问题?

编辑

这对于验证非常简单,例如:从模型中获取验证

ruby metaprogramming

1
推荐指数
1
解决办法
106
查看次数

haml下的bootstrap text_area宽度

我有一个Rails应用程序,并使用haml和bootstrap.一个我的表单我有两个字段用于输入文本,只显示一个,具体取决于我在控制器中设置的变量.如果有一个文本区域我想调整它,并且:rows属性可以工作,但不是列.

我也尝试使用%div:class =>'span6'扩展 text_area,但它似乎不起作用.

= form_for [@lesson_layout, @layout_field] do |f|
  .field
    = f.label :field_name
    = f.text_field :field_name
  - case @layout_type
  - when "Text Field"
    .field
      = f.label :field_value
      = f.text_field :field_value
    - when "Text Area"
      .field
        = f.label :field_value_long
        = f.text_area :field_value_long, :rows => 5, :placeholder => 'Enter text.'

.actions
  = f.submit
Run Code Online (Sandbox Code Playgroud)

编辑

尝试以下代码,它没有改变框的大小.

.field
  = f.label :field_value_long
  = f.text_area :field_value_long, :rows => 5, :placeholder => 'Enter text using markdown.', :html => { :style => …
Run Code Online (Sandbox Code Playgroud)

haml ruby-on-rails twitter-bootstrap

0
推荐指数
1
解决办法
6146
查看次数

为什么要创建created_at和updated_at?

许多编程框架将自动将2个字段填充到模型/表/集合中.在Rails中,两个字段是created_atupdated_at.字段的功能是不言自明的.

created_at

首次在数据库中创建记录的时间戳.

的updated_at

存储在表中的任何数据的最新更改的时间戳.

我工作的一个流星计划不与这些字段来开箱即用,所以加createdAtupdatedAt在我的项目.

然后我开始思考:在什么情况下我们需要知道何时首次创建记录,是不是最后一次更新了?

database ruby-on-rails

0
推荐指数
2
解决办法
995
查看次数