将参数从html发送到控制器中的方法

时间:2015-09-27 13:59:36

标签: ruby-on-rails slim-lang

我有桌子,我用html显示该表的内容。显示的每条记录都有按钮。我想在按钮点击时将记录的id发送到我的控制器的方法。我做错了什么?

my_controller.rb

class MyController < ApplicationController
  skip_authorization_check

def index
  @contacts = Mytable.all
end

def add
  byebug
  ap params[:id]
end
end

index.html.slim

- debug(params) if Rails.env.development?
body
center
  p
    |
      Contacts.
  p.contact-list
     - @contacts.each do |a|
          .name
              p.fname
                = a['fname']
          .surname
              p.lname
                = a['lname']
      .phone
          p.phone
            = a['phone']

          .rocknroll
                    p.rock
               = link_to 'Add', method: add, class: 'icon', value: a['id ']

的routes.rb

get 'my/' => 'my#index', as: 'my'
get 'my/add'

错误

NameError: undefined local variable or method `add'

2 个答案:

答案 0 :(得分:1)

如果您尝试修改现有记录,则应使用PATCH方法。看一下示例here

我认为这应该是:

= link_to 'Add', method: :patch, class: 'icon', value: a['id ']

在routes.rb

resources :contacts do #Assuming you have a Contact model
  member do
    patch 'add' #Or whatever you want to call your method.
  end
end

答案 1 :(得分:0)

  

NameError:未定义的局部变量或方法`add&#39;

我认为错误来自这一行

= link_to 'Add', method: add, class: 'icon', value: a['id ']

没有方法add。可用的方法有getpostput