2013-12-16 70 views
0

我使用設計3應用程序,我已經實現了一些guest用戶funcitonality所概述here設計guest用戶 - 在我的Rails更新的屬性

我在這裏的問題是,我的應用程序依賴於一定程度上精確地理編碼(使用Rails地理編碼和地理編碼用戶通過ZIP),所以我不希望使用的IP地址。我的解決方案是他們進入他們的郵政編碼和訪客用戶記錄與拉鍊創建和地理編碼lat和長有來賓用戶的登錄頁面。請記住,這些訪客用戶記錄尚未創建,但不知道爲什麼他們沒有創建,直到離開目標頁面。我試圖簡單地用一個形式提交稱爲create_guest_user:zip作爲參數,但是這是一個私有方法,所以我不能這樣做。

<p> 
To get started, either <%= link_to 'Sign Up', new_user_registration_path %>, 
    <%= link_to 'Sign In', new_user_session_path %> or enter your zip code here if you want to look around first: 
    <br><br> 
    <%= form_tag({controller: "application", action: "create_guest_user", method: "post"}) do %> 
    <%= text_field_tag :zip %> 
    <%= submit_tag 'Enter Zip', class: "btn" %> 
    <% end %> 
</p> 

從我的閱讀中,我認爲最好是將此方法保留爲私有,所以我想弄清楚如何使這項工作。

上創建一個使用在上面的鏈接列出,但包括設計方法,該訪客用戶的最佳方式有什麼想法:拉鍊作爲由來賓用戶指定的PARAM?

請讓我知道,如果我能在這裏澄清什麼,在此先感謝!

回答

0

從您的鏈接看,方法current_or_guest_user,它只是調用guest_user,其中調用create_guest_user

如果你想離開create_guest_user,然後只需創建用於處理表單後控制器動作,它可以調用create_guest_user因爲你的控制器方法應該擴展ApplicationController,這哪裏是create_guest_user方法聲明爲private。

class ApplicationController < ActionController::Base 

    def public_method 
    # you can call private methods from inside the same class so this is valid 
    private_method 
    end 

    private 

    def private_method 

    end 
end 

class LocationController < ApplicationController 

    def location_public_method 
    # you can call private methods from ApplicationController since LocationController extends ApplicationController so this is valid 
    private_method 
    end 
end 
+0

這聽起來像它可能適用於我。有一個問題,從公共方法調用'create_guest_user'是否有效地使'create_guest_user'成爲公共方法? – settheline

+0

不會。如果你沒有用公共方法調用它,你會怎麼稱呼一個私有方法?一種方法是私人的,因此它不能從課外被調用。這是引用Java,但它仍然有幫助.http://stackoverflow.com/questions/215497/in-java-whats-the-difference-between-public-default-protected-and-private – Catfish

+0

嗯......不知道因爲我對軌道和編程一般都比較陌生。我只有在before_filters等方面有經驗調用private方法。我不知道這些是否屬於「公共方法」,因此我的問題。 – settheline