我打算创建一个指向控制器动作update_heimdall
的链接,这里是代码:
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" %>
我附上rails routes命令列出:
heimdall GET /heimdall(.:format) admins#heimdall
update_heimdall GET /heimdall/update_heimdall/:id(.:format) admins#update_heimdall
不幸的是,此代码会导致以下错误:
未定义的方法`update_heimdall&#39;。
答案 0 :(得分:2)
与您的代码一样,将heim转换为实例变量@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" %>
有关更多信息,您可以在rails指南上查看此ruby: http://guides.rubyonrails.org/getting_started.html