Направляющие form_tag запись формы - с неактивной рекордной моделью

Очистка Переполнения стека особенно легка с Обувь и 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

11
задан Pauli Price 13 August 2009 в 16:57
поделиться

1 ответ

Метод 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 .

16
ответ дан 3 December 2019 в 07:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: