如何将Django应用程序转换为RoR?

问题描述:

我刚刚发现我无法在cPanel上部署Django,因此我将它转换为Ruby on Rails。这是一个小应用程序,用户可以注册一个青铜,银或金包服务。如何将Django应用程序转换为RoR?

我正是想这个流程从Django的到回报率转换:

DJANGO CODE:

网址:

#level is bronze, silver or gold 
url(r'^signup/(?P<level>[\w\-]+)/$', views.signup, name="signup"), 

观点:

# subscribe to gold/silver/bronze package 
def signup(request, level): 
    """ when users subscribe to a package """ 
    context_dict = {} 
    context_dict['level'] = level 
    return render(request, 'payligent/signup.html', context_dict) 

在模板链接到注册页面的索引页面与级别(在这种情况下,青铜):

<a href=" {% url 'payligent:signup' 'bronze'%} "><button class="btn btn-success">Get Started</button></a> 

这是我迄今为止的回报率:

的routes.rb:

get 'pricing/:level', :to => 'welcome2#pricing', as: "package_signup" 

控制器:

class Welcome2Controller < ApplicationController 
    def pricing 
    @package_signup = package_signup.find('bronze') 
    end 
end 

查看:

<a href="<%= link_to 'package_signup bronze', package_signup_path(@package_signup) %>"><button class="btn btn-success">Get Started</button></a> 

不过,我收到RoR的服务器上此错误:

没有路由匹配{:动作=> “定价”,:控制器=> “使用welcome2”, :水平=>零}失踪必需的键:[:级别]

+1

在你的控制器中,'package_signup'是一个模型吗? –

+0

不,它应该是一个类似于django URL中的“注册”的URL的名称:url(r'^ signup /(?P [\ w \ - ] +)/ $',views.signup,name = “注册”), – Seio

<a href="<%= link_to 'package_signup bronze', package_signup_path('bronze') %>"><button class="btn btn-success">Get Started</button></a> 

get 'pricing/:level', :to => 'welcome2#pricing', as: "package_signup" 

这条路线告诉你的应用程序它的预期路线路径,如/定价/铜牌。所以为了让帮手package_signup_path起作用,你需要提供最后一点(:level)。

然后在您的控制器上,您将为您动态设置参数:level

在你的行动意味着你就可以访问它 - 如果您要.../pricing/bronze访问您的应用:

class Welcome2Controller < ApplicationController 
    def pricing 
    @package_signup = params[:level] # <- that will yield 'bronze' because rails translates that portion of the url that was entered and matched, to the name you gave it, you don't need to pass nor declare additional variables nor function parameters 
    end 
end 

现在,这意味着你的实例变量,这是对你的看法使用产生的价值'青铜',或任何被用来访问这条特定路线的东西。现在意味着你的路径助手会按你的方式工作。

<a>标签虽然会链接到同一页面,所以不知道这就是你想要的?