在视图中,我调用了一个控制器方法。然而,这似乎与我想要的方法不同。
该视图包括:
<%= link_to("Upgrade account", upgrade_path)
有路线:
get 'signup/organization' => 'organizations#new', as: 'register'
get 'signup/register' => 'organizations#new_premium', as: 'register_premium'
post 'signup/register' => 'organizations#checkout', as: 'signup_checkout'
post 'signup/register' => 'organizations#upgrade', as: 'upgrade'
get 'signup/confirmation' => 'organizations#confirmation'
&#39;升级&#39;在我的路线文件中的任何其他位置都不会出现。
因此,视图中的路径应调用以下控制器方法:
def upgrade
@organization = current_organization
@actioncode = Actioncode.new
@amount = DEFAULT_PRICE
@currency = "EUR"
@description = @organization.id
@transaction_description = "MyDescription"
@transaction_type = "S"
@hash = hash(@description, @amount, @currency, @transaction_type)
render 'checkout'
end
这应该呈现一个有两种形式的视图(checkout.html.erb)。但是,它会使用消息You're already logged in
重新路由到根目录。事实证明,此消息源自以下控制器方法:
def new_premium
if (logged_in_user?)
flash[:danger] = "You're already logged in"
redirect_to root_url
end
@organization = Organization.new
@member = @organization.members.build
end
我不知道这种方法是如何发挥作用的,以及为什么我的代码不起作用。有没有人有想法?
控制器还包含def checkout
,但我不知道这可能会产生什么效果。行render 'checkout'
我希望渲染checkout.html.erb并且与def checkout
或def new_premium
没有任何关系......对...?
答案 0 :(得分:0)
看看你的路线:
post 'signup/register' => 'organizations#checkout', as: 'signup_checkout'
post 'signup/register' => 'organizations#upgrade', as: 'upgrade'
使用相同动词的相同网址两次。
路由规则是“首次匹配”,所以我猜它们都由checkout
处理。
修复很简单,更改其中一个的网址。