我有以下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中无法做到.
有没有办法做到这一点,我错过了?
我有一个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
密码保护视图的最佳方法是什么?我已经在生成密码,但我不想输入用户名和密码,只需输入密码.我目前将密码存储为File类中的属性,并使用此:
before_filter :restrict, :only => :show
authenticate_or_request_with_http_basic do |password|
password == @file.password
end
Run Code Online (Sandbox Code Playgroud)
但是,它仍然会提示用户输入用户名,但由于缺少用户名而无法正确登录.有没有办法使用这种方法,只有提示只询问密码?如果不是这样做的最佳方式是什么?
我有以下协会:
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遇到的问题是循环现有的记录(当然是!),我宁愿避免,我只想添加一个文件字段来上传新照片.我该怎么做?
associations ×2
belongs-to ×1
fields-for ×1
forms ×1
has-many ×1
nokogiri ×1
passwords ×1
ruby ×1
xpath ×1