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

How to convert Django app to RoR?

我刚刚发现我无法在 cPanel 上部署 Django,所以我将它转换为 Ruby 在 Rails 上。这是一个小应用程序,用户可以在其中注册铜牌、银牌或金牌服务包。

我正是想将此流程从 Django 转换为 RoR:

DJANGO 代码:

url:

#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>

这是我到目前为止的 RoR:

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 服务器上收到此错误:

No route matches {:action=>"pricing", :controller=>"welcome2", :level=>nil} missing required keys: [:level]

<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"

这条路线告诉您的应用程序它期待一个路线路径,例如 /pricing/bronze 。因此,为了让助手 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

这现在意味着您的实例变量,它在您的视图中可用,产生 'bronze' 的值,或者用于访问此特定路由的任何值。这意味着现在您的路径助手将按照您的方式工作。

<a> 标签将 link 您转到同一页面,所以不确定这是您想要的吗?