Das ist das erste Mal, dass ich eine benutzerdefinierte Aktion erstelle, also bin ich etwas verloren. Ich habe ein Formular erstellt, in das ich eine URL eintrage. Diese URL wird an meinen Controller übergeben, wo ich die URL zum Parsen von HTML (via Nokogiri) verwende.Wie auf ein Attribut verwiesen wird, das von form_for im Controller übergeben wird
Das Problem, das ich habe, ist, dass ich keine Ahnung habe, wie man diesen URL-Parameter verwendet, der übergeben wird. Hier
ist die Aktion in meinem Controller:
def newdeal
url = @traveldeal.url #this is where I want to use the URL from my form_for
doc = Nokogiri::HTML(open(url))
title = doc.at_css("#content//h2/a").text
price = doc.at_css(".integer").text[/[0-9\.]+/]
link = doc.at_css("#content//h2/a")[:href]
desc = doc.at_css(".descriptor").text
Traveldeal.create(:title => title, :price => price, :url => link, :description => desc)
flash[:success] = "Deal successfully added!"
redirect_to root_path
end
Der Fehler Ich erhalte ist undefined method 'url'
. Ich habe versucht, etwas wie url = :url
und sogar url = "#{:url}"
, aber ich bekomme keine Klassenfehler, so dass es scheint, dass ich es nur falsch referenzieren.
Der Parameter wird übergeben korrekt obwohl, wenn ich einreichen drücken:
{"utf8"=>"✓", "authenticity_token"=>"tGPYiuVO3dtRaNVvd6HAshqpTV7yXCmM1j0dXRSfpR4=", "traveldeal"=>{"url"=>"http://www.sampleurl.com"}, "button"=>""}
Hier ist die Ansicht:
<%= form_for @traveldeal, :url => newdeal_path, :method => 'post' do |f| %>
<div class="field">
<%= f.label :url %>
<%= f.text_field :url, :class => "round" %>
</div>
<div class="action">
<%= button_tag "", :class => "acctSubmit" %>
</div>
<% end %>
Dank.
Danke, das hat funktioniert! – gemmy