我正在尝试构建我在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}有什么问题}语句意味着计数没有增加?
非常感谢您的耐心
答案 0 :(得分:1)
映射的路由"items/:id"
已与show
操作相关联并具有优先权。
尝试将其与其他网址相关联。
get 'items/:id/visit' => 'items#visit', :as => :items_visit