小编Dav*_*ave的帖子

如何使用 Pandas 将查询与单个外部变量结合起来

我正在尝试通过 html 表单(@search)接受由逗号分隔的许多搜索词的可变输入,并查询数据框的 2 列。

每个列查询都独立工作,但我无法让它们以某种和/或方式协同工作。

第一列查询:

filtered = df.query ('`Drug Name` in @search')
Run Code Online (Sandbox Code Playgroud)

第二列查询:

filtered = df.query ('BP.str.contains(@search, na=False)', engine='python')
Run Code Online (Sandbox Code Playgroud)

像这样编辑组合:

filtered = df.query ("('`Drug Name` in @search') and ('BP.str.contains(@search, na=False)', engine='python')")
Run Code Online (Sandbox Code Playgroud)

给出以下错误,突出显示引擎参数中的 python 标识符

SyntaxError: Python 关键字在 numexpr 查询中无效标识符

编辑 2

数据框是从一个 excel 文件中读取的,列有:药物名称(包含单个药物名称)、BP、U&E(具有长描述性文本条目)

搜索词将通过 html 表单输入:

search = request.values.get('searchinput').replace(" ","").split(',')
Run Code Online (Sandbox Code Playgroud)

作为患者可能使用的药物清单,有时会添加与药物使用相关的特定条件。示例用户输入:

卡托普利、扑热息痛、肾病、慢性

我希望对照特定药物名称检查列表,并检查其他列(例如 BP 和 U&E)是否提及任何搜索词。

编辑 3

道歉,但试图实施给出的答案给我带来了一堆错误。我下面的内容是我所追求的 90%,让我搜索两列,包括“BP”的全部内容。但是我只能通过终端搜索一个术语,如果我 # out 并交换收集使用输入的行(从与终端相关的 html 表单中获取),我得到:

类型错误:不可散列的类型:“列表”

@app.route('/', methods=("POST", "GET"))

    def html_table():
        searchterms = []
        #searchterms …
Run Code Online (Sandbox Code Playgroud)

python filter dataframe pandas

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

为相关数据库创建Rails下拉列表

我有2个模型,场地和区域(区域由id和name字段组成).它们相关:一个区域有许多场地,每个场地属于一个区域.

要将场地分配到我正在输入area_id编号的区域,请在创建新场地页面的文本字段中输入.然后我可以显示场地所属的区域:

<%= venue.area.name %>
Run Code Online (Sandbox Code Playgroud)

我不想输入表格中区域的ID号,而是希望有一个下拉列表,列出所有区域记录的区域名称,以及在保存时与所选区域相关联的区域名称.

新场地形式:

<% form_for @venue do |f| %>
  <p>name: <br>
  <%= f.text_field :name %></p>

  <p>address line 1: <br>
  <%= f.text_field :addressline1 %></p>

  <p>address line 2: <br>
  <%= f.text_field :addressline2 %></p>

  <p>address line 3: <br>
  <%= f.text_field :addressline3 %></p>

  <p>area_id: <br>
  <%= f.text_field :area_id %></p>

  <%= submit_tag %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我试过了:

  <p>area_id: <br>
  <%= collection_select(:area, :name, @areas, :id, :name) %>
Run Code Online (Sandbox Code Playgroud)

但得到:

当你没想到它时,你有一个零对象!
您可能期望一个Array实例.
评估nil.map时发生错误

任何帮助深表感谢!

forms activerecord ruby-on-rails relational-database drop-down-menu

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

从下拉列表中筛选索引页面上的结果

我正在使用轨道3,我有两个模型,场地和区域,每个区域有许多场地,每个场地属于一个区域.

我正在尝试找到一种方法来过滤场地索引中显示的场地记录,在同一页面的下拉框中选择了哪个区域.

下拉框当前显示我想要的所有区域记录,但在选择区域并单击提交按钮后,我希望索引页面重新加载,并且仅显示场地记录的部分区域,其区域与在下拉框.

我在模型中的示波器在rails控制台中调用时显示正确的场地,或者通过将控制器中的def索引更改为@venues = Venue.north/venue.south/venue.west.我只是想办法让所有场地都显示为默认值,然后根据从表格中选择的区域调用每个范围.

在这一点上我并不打算使用AJAX我只想了解如何以尽可能简单的方式完成它并且不使用sphinx/thinking_sphinx.

模型:

class Venue < ActiveRecord::Base
  belongs_to :user
  has_many :reviews
  belongs_to :area

  scope :north, where(:area_id => "2")
  scope :west, where(:area_id => "3")
  scope :south, where(:area_id => "4")
end
Run Code Online (Sandbox Code Playgroud)

查看:(场地index.html.erb)

<div class="filter_options_container">

  <form class="filter_form">
    <%= select("area", "area_id", Area.all.map {|a| [a.name, a.id] }) %>
    <input type="submit" value="Filter" />
  </form>
</div>

<div class="venue_partials_container">
  <%= render :partial => 'venue', :collection => @venues %>
</div>   
Run Code Online (Sandbox Code Playgroud)

控制器:

class VenuesController < ApplicationController

  def index
    @venues = Venue.all
  end
end
Run Code Online (Sandbox Code Playgroud)

任何帮助深表感谢.

activerecord ruby-on-rails filter drop-down-menu

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

如何让用户只使用cancan访问自己的显示页面?

我一直在使用cancan gem进行railscast,但我仍坚持如何只允许用户访问他们自己的显示页面.

我的代码看起来像这样:

能力模型

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new # guest user (not logged in)
    if user.role == "admin"
      can :manage, :all
    else
      can :read, :all
      if user.role == "author"
        can :create, Review
        can :update, Review do |review|
          review.try(:user) == user
        end
        can :update, User do |user|
          user.try(:current_user) == current_user
        end
      end
      if user.role == "owner"
        can :update, Venue
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

用户控制器

class UsersController < ApplicationController
  load_and_authorize_resource
end
Run Code Online (Sandbox Code Playgroud)

用户(作者)只能更新自己的评论,但目前可以通过更改URL查看所有用户显示的页面.

我在这里错过了什么?

ruby-on-rails cancan

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

使用Pow的欢迎使用rails屏幕上的SyntaxError

我刚刚设置了一个新项目,在http:// localhost:3000 /上显示关于你的应用程序环境窗口的所有正确信息,但是当我在http://egg.dev/运行它时,我得到:

SyntaxError: /users/davidhall/work/egg/config/initializers/session_store.rb:3: syntax error, unexpected ':', expecting $end
...sion_store :cookie_store, key: '_egg_session'
                              ^
Run Code Online (Sandbox Code Playgroud)

我确定我之前遇到过这个问题,这是因为我使用带有ruby 1.8.7的rails 3.1,当我使用ruby 1.9.2时问题解决了.现在我也在使用1.9.2时.

感谢任何帮助,非常感谢!

ruby-on-rails syntax-error cookiestore rack-pow

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

使用复选框筛选记录

我正在尝试从零编程经验中学习rails并且有一个我试图制作的应用程序.在这里的人们的帮助下,我有一个场地的索引页面,可以通过下拉菜单过滤它们所属的区域.我希望能够产生相同的效果,但使用复选框,并且还能够选择多个区域添加到过滤器.这是我到目前为止:

型号:

class Venue < ActiveRecord::Base
  belongs_to :user
  has_many :reviews
  belongs_to :area

  scope :north, where(:area_id => "2")
  scope :west, where(:area_id => "3")
  scope :south, where(:area_id => "4")
end
Run Code Online (Sandbox Code Playgroud)

控制器:

def index
  if (params[:area] && Area.all.collect(&:name).include?(params[:area][:name]))
    @venues = Venue.send(params[:area][:name].downcase)
  else
    @venues = Venue.all
  end
end
Run Code Online (Sandbox Code Playgroud)

场地index.html.erb:

<div class="filter_options_container">

  <form class="filter_form", method="get">
    <%= select("area", "name", Area.all.collect(&:name), {:prompt => 'All Areas'}) %><br>
    <input type="submit" value="Filter" />
  </form>

  <br><br>

  <form class="filter_form", method="get">
    <% Area.find(:all).each do |a| %>
      <%= check_box_tag("area", "name") %>
      <%= a.name %> …
Run Code Online (Sandbox Code Playgroud)

checkbox filtering ruby-on-rails

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

如何按平均评分对记录进行排序?

我有一个场地表,我在场地索引页面上显示为局部.我还有一个评论表,其中一个场所可以有很多评论,每个评论的评分为1-5.

我正试图让索引页面上的场地显示平均评分最高且下降的场所.

控制器代码如下所示:

场地控制器

def index
    if
      @venues = Venue.with_type(params[:venuetypes]).with_area(params[:areas]).joins(:reviews).order("reviews.rating DESC")
    else
      @venues = Venue.all
    end
  end
Run Code Online (Sandbox Code Playgroud)

这给出了这样的结果:

  • 如果场地1有5星评价,它会显示位于列表顶部的场地.

  • 如果场地2有5星评论和1星评论它显示两个部分,一个在顶部,一个
    在列表的底部.

  • 如果场地3有5星评价,3星评论和1星评论它显示三个部分,一个在顶部,一个在中间,一个在列表的底部.

我只是希望每个场地有一个局部展示,但是按照平均评分排在列表中,我觉得这里有一个.average或某些遗漏的东西我怎么能实现这个?

感谢任何帮助,非常感谢!

编辑

场地模型

class Venue < ActiveRecord::Base
  attr_accessible :name, :addressline1, :addressline2, :addressline3, :addressline4, :postcode, :phonenumber, :about, :icontoppx, :iconleftpx, :area_id, :venuetype_id, :lat, :long, :venuephotos_attributes
  belongs_to :area
  belongs_to :venuetype
  has_many :reviews
  has_many :venuephotos

  accepts_nested_attributes_for :venuephotos, :allow_destroy => true

  scope :with_type, lambda { |types|
    types.present? ? where(:venuetype_id => types) : scoped }

  scope :with_area, lambda { |areas|
    areas.present? ? where(:area_id …
Run Code Online (Sandbox Code Playgroud)

sorting ruby-on-rails ruby-on-rails-3

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

如何停止使用已添加记录复制的fields_for嵌套表单?

我有一个场地表,我在场地编辑页面上使用嵌套表格为每个场地添加优惠.但是,每次添加新商品时,fields_for表单都会保存输入的文本,并为要添加的其他商品记录创建新的空白表单.

我只想为每个添加的记录添加一个"添加新优惠"表单.

没有添加任何优惠 - 这很好: 在此输入图像描述

添加了一个优惠 - 现在theres 2'添加新优惠'表单和不需要的空白优惠部分:

在此输入图像描述

添加一个优惠后,这就是我想要的样子: 在此输入图像描述

新的空白报价表格和空白部分的数量随着控制器中内置的数字的变化而变化(在1分钟时)

场馆管制员

class VenuesController < ApplicationController   
  def edit
    @venue = Venue.find(params[:id])
    1.times { @venue.offers.build }
  end

  def update
    @venue = Venue.find(params[:id])
    if @venue.update_attributes(params[:venue])
      flash[:notice] = 'Venue updated successfully'
      redirect_to :back
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

场地模型

class Venue < ActiveRecord::Base
  has_many :offers
  accepts_nested_attributes_for :offers
end
Run Code Online (Sandbox Code Playgroud)

场地edit.html.erb

      <%= form_for @venue do |f| %>

        <h2 class="venue_show_orange">Offers</h2>

        <div class="edit_venue_details">
          <% if @venue.offers.count.zero? %>
            <div class="no_offers">
              No offers added yet.
            </div>
          <% else %>
            <%= render …
Run Code Online (Sandbox Code Playgroud)

nested ruby-on-rails build nested-forms fields-for

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

如何在Mac上的终端中识别RVM?

我正在尝试按照本教程rubysource.com上教程在 mac 上设置rails

我已经安装了oh-my-zsh和RVM但是当我尝试命令时:

rvm类型| 头-1

我得到zsh:正确'rvm'到'rvim'[nyae]?

哪个是扔我,因为这应该显示在终端:

rvm是一个功能

如果我选择'n',我会得到:

zsh:找不到命令:rvm

如果我选择'y',我会得到:

Vim:警告:输出不是终端

我是一个非常新的使用mac(昨天买它),我正在努力获得ruby和rails所有设置,就像我在我的Windows系统上.

任何帮助深表感谢!

macos zsh ruby-on-rails rvm

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

如何在悬停父级时为子div添加样式?

我有一个场地记录表,每个场地都有一个绝对位于页面上的地图图标(使用每个记录的顶部和左侧整数字段).

每个场地作为部分显示在索引页面上,每个场地图标都放在远离主要部分的地图上.(所有部分在屏幕的一侧以网格样式显示,所有地图图标都显示在屏幕另一侧的PNG地图上.)

地点局部

<%= link_to venue do %>
  <div class="venue_partial">

    <div class="venue_icon">
      <%= image_tag venue.venuetype.icon.url(:thumb), :class => 'image' %>
    </div>

    <span class="venue_partial_name"><%= venue.name %></span>

    <div id="venue_map_icon_<%= venue.id %>" style="position:absolute;" class="mapicon"> <%= image_tag (venue.venuetype.mapicon.mapicon.url(:mapicon)) %></div>
  </div>
<% end %>

<script type="text/javascript">
  document.getElementById("venue_map_icon_<%= venue.id %>").style.left= "<%= venue.iconleftpx %>px";
  document.getElementById("venue_map_icon_<%= venue.id %>").style.top= "<%= venue.icontoppx %>px";
</script>
Run Code Online (Sandbox Code Playgroud)

场地部分具有悬停风格,改变背景颜色.当我将鼠标悬停在场地地图图标上时,主要部分的背景颜色会按预期更改.

但是,当我将鼠标悬停在主要部分上时,如何才能使地图图标改变其样式?

每个地图图标都有一个.mapclass:悬停样式,但仅在将鼠标悬停在图标而不是其所在的部分时激活.

感谢任何帮助,非常感谢!

javascript css ruby-on-rails hover

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

启动应用程序Bundler :: GemNotFound时出错

我刚刚启动了一个新的应用程序,但是当我点击欢迎登陆页面上的"关于你的应用程序的环境"链接时,我收到了这个错误.

启动应用程序时出错当Pow尝试运行它时,您的Rack应用程序引发了异常.

Bundler :: GemNotFound:在任何来源中都找不到activesupport-3.2.6

我的应用正在运行:

  • Rails 3.2.6
  • Ruby 1.9.3p194
  • Rubygems 1.8.24
  • RVM 1.14.5
  • 战俘0.4.0

我发现了类似的问题,其中问题是如何解决乘客问题,但我没有使用它.

当我运行gem list时,我得到:

*本地宝石*

actionmailer(3.2.6)actionpack(3.2.6)activemodel(3.2.6)activerecord(3.2.6)activeresource(3.2.6)activesupport(3.2.6)arel(3.0.2)builder(3.0.0)bundler( 1.1.4)coffee-rails(3.2.2)coffee-script(2.2.0)coffee-script-source(1.3.3)daemon_controller(1.0.0)erubis(2.7.0)execjs(1.4.0)fastthread( 1.0.7)加息(1.2.1)i18n(0.6.0)旅程(1.0.4)jquery-rails(2.0.2)json(1.7.3)mail(2.4.4)mime-types(1.19)multi_json( 1.3.6)乘客(3.0.13)多语言(0.3.3)机架(1.4.1)机架缓存(1.2)rack-ssl(1.3.2)机架测试(0.6.1)导轨(3.2.6) railties(3.2.6)rake(0.9.2.2)rdoc(3.12)rubygems-bundler(1.0.3)rvm(1.11.3.4)sass(3.1.20)sass-rails(3.2.5)链轮(2.4.3, 2.1.3)sqlite3(1.3.6)thor(0.15.4,0.15.3)倾斜(1.3.3)树顶(1.4.10)tzinfo(0.3.33)uglifier(1.2.6)

任何帮助将不胜感激,谢谢.

更新

source 'https://rubygems.org'

gem 'rails', '3.2.6'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'sqlite3'


# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem …
Run Code Online (Sandbox Code Playgroud)

gem rack ruby-on-rails bundler rack-pow

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