小编Tib*_*agy的帖子

如何在Yii2中的ON条件中使用常量h​​asMany关系

我尝试创建一个多态关联,这在Rails中很常见,但遗憾的是在Yii2中没有.作为实现的一部分,我需要定义关系:

public function getImages()
{
   return $this->hasMany(RecipeImage::className(), 
       ['imageable_id' => 'id', 'imageable_type' => 'Person']);
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为'Person'被视为当前模型的属性,但它是一个常量(多态关联的类名).

如果我尝试使用'andWhere',它当然会在WHERE子句而不是ON子句中添加条件,导致只返回包含现有图像的记录.

public function getImages()
{
   return $this->hasMany(RecipeImage::className(), ['imageable_id' => 'id'])->
       andWhere(['imageable_type' => 'Ingredient']);
}
Run Code Online (Sandbox Code Playgroud)

我该如何定义关系?没有andOn方法.

has-many relation polymorphic-associations yii2

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

如何等待并接受带有水豚/硒的警报箱

我在我的rspec测试中使用以下代码:

describe "Save should create a BasketItem and a Basket" do
  subject { 
    lambda { 
      click_button I18n.t(:create_basket_and_add_items) 
      page.driver.browser.switch_to.alert.accept    # close the alert box
    } 
  }
  it { should change(BasketItem, :count).by(1) }
  it { should change(Basket,     :count).by(1) }
end
Run Code Online (Sandbox Code Playgroud)

click_button火灾一个不显眼的JavaScript调用,显示一条警告弹出窗口.但是,关闭警报框仅在大约50%的测试运行中成功,我猜是因为警报框在命令page.driver.browser.switch_to.alert.accept运行时并不总是在屏幕上.如果警报框未关闭,下一个测试用例当然会遇到"超时错误".

如果我sleep 1click_button和之间使用它总是正常工作...alert.accept,但它不是一个非常好的解决方案.任何的想法?

alert rspec unobtrusive-javascript capybara selenium-webdriver

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

为什么在rake db:schema:load期间初始化Factory Girl

我已经从Rails 3.2升级到Rails 4.1.12并且我收到了一条错误消息

rake db:drop db:create db:schema:load RAILS_ENV=test
Run Code Online (Sandbox Code Playgroud)

错误消息是由Factory Girl导致缺少表的SQL错误.但是为什么工厂女孩应该初始化db:schema:load

有趣的是,如果我降级到Rails 4.1.11,问题就会消失.

rake ruby-on-rails database-schema factory-bot

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

首先按降序对 Yii2 Gridview 进行排序

我有一个由 Yii2 GridView 呈现的表格。表头包含按日期排序的链接。如果我单击它,它首先按升序对表格进行排序,然后按降序对第二次单击进行排序。但我想在第一次点击时降序。

我在搜索控制器的搜索方法 (asc->SORT_DESC) 中使用 hack 解决了它:

   $dataProvider->sort->attributes['updated_at'] = [ 
      'asc'  => [$this->tablename() . '.updated_at' => SORT_DESC ], 
      'desc' => [$this->tablename() . '.updated_at' => SORT_ASC], 
   ]; 
Run Code Online (Sandbox Code Playgroud)

有更好的解决方案吗?

sorting gridview yii2

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

Bootstrap 下拉菜单始终位于粘性元素后面

我正在使用引导下拉菜单和https://github.com/wilddeer/stickyfill来修复屏幕顶部的一些元素。请参阅jsfiddle

我无法实现下拉菜单显示在“粘性线”上。我尝试过 z-index 但没有成功。

我没有尝试使用其他粘性插件(makefixed.jsjquery.sticky.js),但结果是相同的。菜单始终位于粘性元素后面。

任何想法?

HTML代码(与jsfiddle相同):

$(function() {
  $(".sticky").Stickyfill();
});
Run Code Online (Sandbox Code Playgroud)
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://www.diet-health.info/js/stickyfill.js"></script>

<header class="sticky" style="padding:3px;top:0px">
  <div class="dropdown btn-group" style="float:right;">
    <button id="right-menu" class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">Right Menu</button>
    <ul class="dropdown-menu pull-right" aria-labelledby="right-menu">
      <li><a href="#">Item 1</a></li>
      <li><a href="#">Item 2</a></li>
      <li><a href="#">Item 3</a></li>
      <li><a href="#">Item 4</a></li>
      <li><a href="#">Item 5</a></li>
    </ul>
  </div>
</header>
<div class="clearfix"></div>
<p>Normal line</p>
<p>Normal line</p>
<p>Normal line</p>
<div class="sticky" style="top:40px">
  <p>
********************************************* …
Run Code Online (Sandbox Code Playgroud)

css sticky twitter-bootstrap drop-down-menu

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