小编Lee*_*vis的帖子

XPath轴,获取所有后续节点,直到

我有以下HTML示例:

<!-- lots of html -->
<h2>Foo bar</h2>
<p>lorem</p>
<p>ipsum</p>
<p>etc</p>

<h2>Bar baz</h2>
<p>dum dum dum</p>
<p>poopfiddles</p>
<!-- lots more html ... -->
Run Code Online (Sandbox Code Playgroud)

我想要提取'Foo bar'标题后的所有段落,直到我到达'Bar baz'标题('bar baz'标题的文字未知,所以不幸的是我无法使用bougyman提供的答案).现在我当然可以使用类似的东西,//h2[text()='Foo bar']/following::p但当然会抓住这个标题后面的所有段落.因此,我可以选择遍历节点集并将段落推送到数组,直到文本与下一个标题的文本匹配为止,但说实话,这在XPath中无法做到.

有没有办法做到这一点,我错过了?

ruby xpath nokogiri

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

Rails有很多,属于一个

我有一个User模型,它有很多projects,Project模型可以有很多users,但也属于一个用户(即创建这个项目的用户).它必须属于一个User.它还允许用户列表与之关联,并考虑协作.

考虑到这一点,我的模型看起来像这样:

class User < ActiveRecord::Base
  has_many :assigned_projects
  has_many :projects, :through => :assigned_projects
end

class Project < ActiveRecord::Base
  belongs_to :user
  has_many :assigned_projects
  has_many :users, :through => :assigned_projects
end

class AssignedProject < ActiveRecord::Base
  belongs_to :user
  belongs_to :project
end
Run Code Online (Sandbox Code Playgroud)

现在,当我想通过a创建一个新项目时User,我就是这样做的:

user = User.create(:name => 'injekt')
user.projects.create(:name => 'project one')
Run Code Online (Sandbox Code Playgroud)

现在,我知道这projects是通过AssignedProject连接模型提供的,这就是为什么project.user会返回nil.我挣扎,围绕让我的头是分配该项目的创建者最好的方式(其中的方式并不需要user,它可能是creator或别的东西,描述性的,只要它的类型User).

接下来的想法是创建一个projects_created从a User …

ruby-on-rails associations has-many has-many-through belongs-to

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

Rails仅限密码登录

密码保护视图的最佳方法是什么?我已经在生成密码,但我不想输入用户名和密码,只需输入密码.我目前将密码存储为File类中的属性,并使用此:

before_filter :restrict, :only => :show    

authenticate_or_request_with_http_basic do |password|
  password == @file.password
end
Run Code Online (Sandbox Code Playgroud)

但是,它仍然会提示用户输入用户名,但由于缺少用户名而无法正确登录.有没有办法使用这种方法,只有提示只询问密码?如果不是这样做的最佳方式是什么?

authentication passwords ruby-on-rails

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

避免使用fields_for将单个记录添加到关联模型

我有以下协会:

class Developer < ActiveRecord::Base
  has_many :large_photos, :class_name => 'Photo', :conditions => { :large => true }, :reject_if => proc { |x| x['image'].blank? }
end

class Photo < ActiveRecord::Base
  belongs_to :developer
  mount_uploader :image, ImageUploader # Carrierwave
end
Run Code Online (Sandbox Code Playgroud)

现在,我正在寻找一个开发表单,在提交时,将添加一个文件字段来上传新表单Photo.目前我有:

<%= form_for @developer do |form| %>

    <%= form.fields_for :large_photos do |sf| %>
    <div class="dropzone">
        <%= sf.file_field :image %>
        <%= sf.hidden_field :large, :value => '1' %>
        <%= sf.hidden_field :image_cache %>
    </div>
    <% end %>

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

现在,我fields_for遇到的问题是循环现有的记录(当然是!),我宁愿避免,我只想添加一个文件字段来上传新照片.我该怎么做?

forms ruby-on-rails associations fields-for

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