2012-07-03 33 views
1

我的路由文件看起來是這樣的:的form_tag創建/更新動作軌道3

scope :locslug/:userslug do 
.... 
.... 

post 'rate/:stars' => 'articles#rate' :as => :rate_article 
end 

我試圖生成與目標中的物品操作的操作形式。理想情況下,表單提交後,評級將被創建或更新。在其他地方,我有一篇文章has_many評級。

這不起作用:

= form_tag rate_article_path, :method=>'post', :id => "rate_article" do 
    =hidden_field_tag :article_id, @article.id 
    =hidden_field_tag :stars, 0 
    =hiden_field_tag :user, current_user.id 

幫助是非常讚賞。謝謝。

回答

1

是否會顯示一些錯誤?我覺得你有你的路線錯了:「速度/:明星們告訴Rails期望的參數,當你調用rate_article_path(5星的東西鏈接rate_article_path(5))

你應該有你的路線:

post 'rate/:article_id' => 'articles#rate' :as => :rate_article 

表單:

= form_tag rate_article_path(@article), :method=>'post', :id => "rate_article" do 
    =hidden_field_tag :stars, 0 
現在

控制器

def rate 
    article = Article.find(params[:article_id]) 
    article.rates.create(:user => current_user, :stars => params[:stars]) 
end 

上(它真的很簡單,你應該做一些驗證,它只是想知道該怎麼做)

+0

我確實改變了我的路線以除去**:stars **變量。但我的問題發生,因爲我試圖從我的app.js文件中使用ajax文章。出於某種原因,當我這樣做時,我發佈的行爲總是錯誤的。我在視圖中用*:remote => true *替換它,並且一切都按我的預期工作。儘管如此,感謝您的幫助。 – berto77