我在路线文件中有这个:
match "/register/:invitation_code", to: "users/invites#register", as: "register_by_invite", via: [:get, :post]
我有以下控制器结构:
这是我的控制器代码:
class Users::InvitesController < ApplicationController
def GET_register
@invite = Invite.find_by_invite_code(params[:invitation_code])
end
def POST_register
end
end
我的观点结构:
出于某种原因,所有的实例(@invite ......)都没有被发送到视图,这真的很奇怪,而且我整天都坚持这一点。
答案 0 :(得分:2)
您不能像这样命名您的控制器操作。
目前,您的GET和POST请求都在尝试呈现register
操作(并且您的GET_register
和POST_register
请求被完全忽略)。您不需要控制器操作,因此它不使用控制器操作,它只是呈现视图register.html.erb
。
如果要对同一URL(使用不同的HTTP方法)使用两种不同的操作,则需要两种不同的路由。一个用于GET路由,一个用于POST路由。 edit
和update
将是您将用于此的常规操作名称 - 因为它是您正在执行的操作,更新Invite对象。