Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 动态生成css id和名称时,从嵌套下拉列表中选择Capybara_Ruby On Rails_Ruby_Rspec_Capybara_Cocoon Gem - Fatal编程技术网

Ruby on rails 动态生成css id和名称时,从嵌套下拉列表中选择Capybara

Ruby on rails 动态生成css id和名称时,从嵌套下拉列表中选择Capybara,ruby-on-rails,ruby,rspec,capybara,cocoon-gem,Ruby On Rails,Ruby,Rspec,Capybara,Cocoon Gem,我正在尝试使用水豚从下拉列表中选择一个项目 下拉列表是使用cocoon gem生成的嵌套项。css id和名称都是动态生成的 页面源的复制/粘贴如下所示: <div class="form-group select required protocol_step_items_orientation_id col-sm-3" title="Select an orientation for the plane of imaging." data-toggle="tooltip" data-pl

我正在尝试使用水豚从下拉列表中选择一个项目

下拉列表是使用cocoon gem生成的嵌套项。css id和名称都是动态生成的

页面源的复制/粘贴如下所示:

<div class="form-group select required protocol_step_items_orientation_id col-sm-3" title="Select an orientation for the plane of imaging." data-toggle="tooltip" data-placement="auto" data-delay="{"show":700,"hide":100}" data-animation="true">
<div class="col-sm-9">
<select id="protocol_step_items_attributes_1432720278702_orientation_id" class="select required form-control" name="protocol[step_items_attributes][1432720278702][orientation_id]">
<option value="">Orientation</option>
<option value="74">Axial</option>
<option value="75">Sagittal</option>
<option value="76">Coronal</option>
<option value="77">Sagital Oblique</option>
<option value="78">Coronal Oblique</option>
<option value="79">Axial Oblique</option>
</select>
</div>
</div>

方向
轴向
矢状
冠状的
矢状斜肌
冠状斜位
轴向倾斜
我可以给水豚搜寻器什么语法来选择:

<select id="protocol_step_items_attributes_1432720278702_orientation_id" class="select required form-control" name="protocol[step_items_attributes][1432720278702][orientation_id]">

编辑: 此代码生成选择框:

<div class="links" >
        <div class="row">               
      <%= link_to_add_association 'Add Imaging Step', f, :step_items, :wrap_object => Proc.new{|item| item=StepItem.new}, :class=>"btn btn-primary btn-xs add_imaging_step", title: "Click here to add an imaging step.", data: {toggle: "tooltip", placement: "right", animation: true, delay: {show: 700, hide: 100}}%>

  <%= link_to_add_association 'Add an Imaging Step List', f, :step_lists, :wrap_object => Proc.new{|item| item=StepList.new}, :class=>"btn btn-primary btn-xs",title: "Click here to add an imaging step list.", data: {toggle: "tooltip", placement: "right", animation: true, delay: {show: 700, hide: 100}}%>

  <%= link_to_add_association 'Add an Imaging Tip', f, :tips, :class=>"btn btn-primary btn-xs", title: "Click here to add an imaging tip.", data: {toggle: "tooltip", placement: "right", animation: true, delay: {show: 700, hide: 100}}%>

  <%= link_to_add_association 'Add an Image', f, :images, :class=>"btn btn-primary btn-xs", title: "Click here to add an image.", data: {toggle: "tooltip", placement: "right", animation: true, delay: {show: 700, hide: 100}}%>

  <%= link_to_add_association 'Add a Document', f, :documents, :class=>"btn btn-primary btn-xs", title: "Click here to add a document.", data: {toggle: "tooltip", placement: "right", animation: true, delay: {show: 700, hide: 100}}%>
    </div><!--row-->

Proc.new{item | item=StepItem.new},:class=>“btn btn主btn xs添加成像步骤”,标题:“单击此处添加成像步骤”,数据:{切换:“工具提示”,位置:“右”,动画:真,延迟:{显示:700,隐藏:100}%>
Proc.new{| item | item=StepList.new},:class=>“btn btn主btn xs”,标题:“单击此处添加成像步骤列表”,数据:{切换:“工具提示”,位置:“右”,动画:真,延迟:{显示:700,隐藏:100}%>
“btn btn主btn xs”,标题:“单击此处添加图像提示”,数据:{切换:“工具提示”,位置:“右”,动画:真,延迟:{显示:700,隐藏:100}}%>
“btn btn主btn xs”,标题:“单击此处添加图像”,数据:{切换:“工具提示”,位置:“右”,动画:真,延迟:{显示:700,隐藏:100}}%>
“btn btn主btn xs”,标题:“单击此处添加文档”,数据:{切换:“工具提示”,位置:“右”,动画:真,延迟:{显示:700,隐藏:100}}%>

编辑2: 我想答案可能在这里:

或在此:


。。。但我似乎无法找出正确的语法来给水豚搜索器

您可以为下拉列表分配id。然后您可以根据id选择元素

下面的链接告诉您如何按id选择元素。

这项工作:

  orientations=page.all('html body main form#new_protocol.simple_form.form-horizontal div.form-inline div#step_items.ui-sortable div div#step_lists div div#tips div div#images div div#documents div div.links div.nested-fields div.form-inputs.row div.form-group.select.required.protocol_step_items_orientation_id.col-sm-3 div.col-sm-9 select')
  orientations.first.select('Axial')

。。。但感觉很脆。有没有更好的方法?

基于您生成的名称?谢谢kamesh。问题已用关联代码更新。我明白了。你能用cocoon添加一些示例ruby代码来分配id吗?@PerryHorwich“btn btn primary btn xs”;:id=>“test”,标题:“单击此处添加文档”,数据:{切换:“工具提示”,位置:“右”,动画:true,延迟:{show:700,hide:100}%>kamesh,我认为这并不能解释cocoon如何支持为给定的父母创建多个孩子。谢谢你。答案在这里或这里:。。。但它似乎有太多的抽象层次,让我无法理解??