2017-08-25 129 views
0

我要创建一个链接到一个控制器的动作update_heimdall这里是代码:Ruby on Rails的未定义的方法

app/controller/admins_controller

def heimdall 
    @headline = "Heimdall" 
    @users = User.where(deleted_at: nil) 
    authorize @users 
    @focusUser = params['users'].blank? ? current_user : User.find(params['users']) 
    heim = Heimdall.new 
    @cards = heim.get_cards(@focusUser.trello_id, @focusUser.trello_access_token, @focusUser.trello_secret_token) 
    end 

    def update_heimdall 
    @user = params['users'].blank? ? current_user : User.find(params['users']) 
    authorize @user 
    heim = Heimdall.new 
    heim.update_cards(@user.trello_id, @user.trello_access_token, @user.trello_secret_token) 
    end 

app/views/admins/heimdall.html.rb

<%= link_to "Odśwież", update_heimdall(), class: "btn btn-warning" %> 

函寄以及从轨道列出的路线命令:

heimdall GET /heimdall(.:format) admins#heimdall           
update_heimdall GET /heimdall/update_heimdall/:id(.:format) admins#update_heimdall    

不幸的是这个代码将导致以下错误:

undefined method `update_heimdall'.

回答

2

在你的代码,转换海姆在实例变量@heim,这样就可以在视图中访问它。然后调用指定行为路径中的对象。

当你进行rake routes你会得到所有的paths在左侧

heimdall GET /heimdall(.:format) admins#heimdall           
update_heimdall GET /heimdall/update_heimdall/:id(.:format) admins#update_heimdall    

因此你的代码应该是:

<%= link_to "Odśwież", update_heimdall_path(@heim), class: "btn btn-warning" %> 

获取更多信息,您可以在轨道上引导结帐这个红宝石: http://guides.rubyonrails.org/getting_started.html

+0

另外,路由需要传递':id'。你的代码仍然会出错。 – Pavan

+0

我得到了什么问题。最后我没有添加_path,我的不好。谢谢。 – Borbat

相关问题