2014-02-11 61 views
0

我使用AJAX將表單傳遞給Ruby方法。我用圓括號自動生成了表單名稱。讀取參數適用於沒有括號的參數,但不會讀取明顯的參數。轉義括號似乎不起作用。我將如何使用控制器讀取這些params[]Rails 4 - Rails中的圓括號參數

控制器:

def add 
    @name = params[:item][:name] 
    @expiration_month = params[:item][:expiration(2i)] 

    result = { :name => @name, :expiration => @expiration_month } 
    render :json => result, :status => :ok 
    end 

Rails的控制檯輸出

Parameters: {"utf8"=>"â", "authenticity_token"=>"Dw7aqaIuk3btP+Alp03AXgDjoJyK2YoZH2CDo6LEPzM=", "item"=>{"name"=>"cvbnvbncv", "expiration(2i)"=>"", "expiration(3i)"=>"", "expiration(1i)"=>"", "classification_id"=>""}} 

回答

3

u能做到這樣也

@expiration_month = params["item"]["expiration(2i)"] 
0

它很難說沒有進一步的情況下,但我建議將expiration(2i)分配給一個變量,然後傳入變量。

1

可能有其他方法可以做到這一點,但在我的腦袋是先創建一個字符串表示,然後使用to_sym把它在一個符號,像這樣彈出第一:

@expiration_month = params[:item]["expiration(2i)".to_sym] 

從技術上講,主要的缺點(這可能不會成爲你的情況),不得不創建該字符串對象。由於字符串是可變的,並且不像其他語言(如Java)那樣自動執行,所以執行"expiration(2i)".to_sym行實際上會生成兩個字符串對象,儘管它們具有相同的字符序列。再一次,我懷疑這對你來說會是一個問題,因爲你發佈的代碼,但我認爲我會提及它。

+1

感謝您的回答!我將接受Rahul的答案,因爲它在功能上做同樣的事情,我的用例不需要轉換,因爲我只使用一個請求的參數。 – Patrick

+0

@帕特里克根本不用擔心。這正是答案選擇應該如何接受的。他的回答確實更有意義。我忘了你也可以用一個簡單的字符串訪問。祝你好運! –