2012-03-24 22 views
0

這是我第一次創建自定義操作,所以我有點失落。我創建了一個輸入URL的表單。這個URL被傳遞給我的控制器,我使用URL來解析html(通過Nokogiri)。如何在控制器中引用從form_for傳遞的屬性

我遇到的問題是我不知道如何使用這個正在傳遞的URL參數。

這裏是我的控制器動作:

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 

我得到的錯誤是undefined method 'url'。我試過做類似url = :url甚至url = "#{:url}",但我得到無類錯誤,所以看來我只是不正確地引用它。

的參數正確傳遞,雖然當我按下提交:

{"utf8"=>"✓", "authenticity_token"=>"tGPYiuVO3dtRaNVvd6HAshqpTV7yXCmM1j0dXRSfpR4=", "traveldeal"=>{"url"=>"http://www.sampleurl.com"}, "button"=>""}

這裏是視圖:

<%= 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 %> 

感謝。

回答

1

你在你行動之前url = @traveldeal.url需要@traveldeal = Traveldeal.new(params[:traveldeal])

+0

謝謝,這工作! – gemmy 2012-03-24 20:20:13

0

嘗試使用PARAMS [ 「traveldeal」] [ 「網址」]

你永遠定義@traveldeal

相關問題