Очистка Переполнения стека особенно легка с Обувь и Hpricot.
require 'hpricot'
Shoes.app :title => "Ask Stack Overflow", :width => 370 do
SO_URL = "http://stackoverflow.com"
stack do
stack do
caption "What is your question?"
flow do
@lookup = edit_line "stackoverflow", :width => "-115px"
button "Ask", :width => "90px" do
download SO_URL + "/search?s=" + @lookup.text do |s|
doc = Hpricot(s.response.body)
@rez.clear()
(doc/:a).each do |l|
href = l["href"]
if href.to_s =~ /\/questions\/[0-9]+/ then
@rez.append do
para(link(l.inner_text) { visit(SO_URL + href) })
end
end
end
@rez.show()
end
end
end
end
stack :margin => 25 do
background white, :radius => 20
@rez = stack do
end
end
@rez.hide()
end
end
Метод form_tag
не использует конструктор форм , поэтому вы не можете использовать переменную "f" в блоке формы. Вместо f.error_messages
вы должны использовать error_messages_for
и т. Д.
<% form_tag new_article_url(@article), :method => :post do %>
<%= error_messages_for :article %>
<p>
<%= label :article, :title %><br />
<%= text_field :article, :title %>
</p>
<p>
<%= submit_tag 'Create' %>
</p>
<% end %>
Тем не менее, вы можете использовать form_for
без ActiveRecord объекты, им просто нужно реагировать на определенные методы. Убедитесь, что эти методы реализованы в модели Article.
id
new_record?
to_param
errors
Это всего лишь предположение относительно того, что необходимо, могут быть другие. Если они реализованы и ведут себя как ActiveRecord, вы сможете использовать form_for
.