在Rails中的新操作中使用重定向3

时间:2011-06-25 03:20:59

标签: ruby-on-rails ruby-on-rails-3

我正在尝试构建我在rails中的第一个新动作,感谢在这里的人们的帮助,我现在已经让绝大多数人工作了,但是由于我对事情的确切运作方式的误解,行动没有达到预期的效果动作。

我有一个名为Items的数据库,其中包含:id:external_url:click_count 我的目标是建立一个链接,当点击该链接时,用户将被定向到外部网址,:click_count将增加1。

目前,我有以下内容: view

<%= link_to image_tag( item.picture.to_s + ".gif"), items_clickcountplusone_path(:id => item.id)%>

items_controller

def clickcountplusone
    clickeditem = Item.find(params[:id])
    redirect_to clickeditem.external_url if clickeditem.update_attribute(:click_count, clickeditem.click_count + 1)
end 

routes.rb

get 'items/:id' => 'items#clickcountplusone', :as => :items_clickcountplusone

使用此代码,页面本身会加载所有可见的链接。 但是,当我点击链接时,我会被定向到items/whateveridiclickedon而不是外部网址,此外:click_count值不会从其初始值增加。

我这样做是否正确?特别是路线正常,它现在看起来好像我指示它被导向我的网站上的特定页面的项目,这不是我的意图...另外,{{1}有什么问题}语句意味着计数没有增加?

非常感谢您的耐心

1 个答案:

答案 0 :(得分:1)

映射的路由"items/:id"已与show操作相关联并具有优先权。

尝试将其与其他网址相关联。

get 'items/:id/visit' => 'items#visit', :as => :items_visit