2017-07-29 162 views
0

我剛剛發現我無法在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

回答

0
<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>標籤雖然會鏈接到同一頁面,所以不知道這就是你想要的?

相關問題