rails按钮点击计数器

时间:2016-08-29 12:15:08

标签: ruby button methods

这是另一个我全新的Ruby-please-have-mercy情况。

因此,我试图弄清楚如何创建所有按钮的数据库,以便在每次点击时保存点击次数。我开始new rails试用它并生成model Buttoncontroller buttons index

route.rbs

Rails.application.routes.draw do
  resources :buttons
  root 'buttons#index'
end

迁移

class CreateButtons < ActiveRecord::Migration[5.0]
  def change
    create_table :buttons do |t|
      t.integer :clicks
      t.timestamps
    end
  end
end

buttons_controller

class ButtonsController < ApplicationController
  def index
    @button = Button.find(1)
  end

  def doit
    @button = Button.find(1)
    @newcount = @button.clicks + 1
    Button.find(1).update_attributes(:clicks => @newcount)
  end
end

现在..我需要触发doit方法..是否可以触发非CRUD操作? 我试过这个,但似乎没有用 index.html.erb

<h1>Hello, This is button and my click are :</h1>
<h1><%= @button.clicks %></h1>
<%= link_to 'click me', method: :doit %>

我知道那里有一些我没有到达的地方...... Ruby已经做了很多魔术,我不能做一个简单的ruby方法..我很难得到方法正在发生而没有通过名字调用它们。 特别是当我触发一个删除方法并且由此触发了destroy方法时......我真的需要习惯这个太多魔术的编码

1 个答案:

答案 0 :(得分:0)

我认为有几点需要改进。如果出现问题,请回复我(我没有运行代码)

使索引操作列表中的所有按钮

控制器:

[HttpPost]
[HttpParamAction]
public virtual async Task<ActionResult> ActionName(AccountModel model, string Account)
{ 
  if(Account=="Edit"){
   ... 
  }
  else if(Account=="AddNew"){
    ....
  }
}

查看:

def index
  @buttons = Button.all
end

<h1>These are all my buttons</h1> <% @buttons.each do |button| %> <%= link_to("Button #{button.id}", button_votes_path(button), method: :post) %> <% end %> 显示资源列表很常见。

仅创建您需要的路线,将增量设为单独的动作

我选择将其称为&#34;投票&#34;。你也可以称之为&#34;点击&#34;或者&#34;按&#34;或者其他什么。

index

添加投票控制器

resources :buttons, only: [:index] do
  resources :votes, only: [:create]
end

这里没有错误处理。所以这只是为了让你开始。 对于接下来的步骤,我建议您遵循教程或从更简单的东西开始。