2014-07-17 15 views
0

這個問題是我關於Ruby on Rails更大的問題的一部分,即紅寶石在哪裏以及如何滿足導軌?我們如何在控制器與視圖和模型之間進行交互。但要具體。通過rails中的鏈接傳遞參數,有可能嗎?

我有一個link_to方法,我稱之爲自定義方法。我如何將參數傳遞給該方法?

例如

%td= link_to "Reject", toggle_field_admin_entry_path(photo, "foo") 

所以我理解這一步,說明「照片」是動作要在操作的對象,但「說法」可能是一個值,這樣才能做這樣的事情

def toggle_field(argument) 
    if argument == "foo" 
    do this to photo 
    else 
    do that to photo 
    end  
    end 

我們可以做到這一點只是一個字符串?或者它必須是散列? 我對ruby方法有一個基本的理解,但我正在努力理解它們與rails在視圖中的關係。

如果您需要進一步澄清,請不要對此感到sn,,我想在這裏學習。如果你覺得我是主題,我會編輯myanswer以獲得更多關於主題的內容。

謝謝你的時間。

+0

http://guides.rubyonrails.org/ – xlembouras

+0

@xlembouras,是是我知道,每個人都發布這個。謝謝,雖然,第123456789時間 –

+1

不要錯了。這只是你的問題是關於一些非常基本的rails的東西。國際海事組織通過一些指南可以更好,更快地學習,而不是從SO上的問題。 – xlembouras

回答

1

使用params

的意見

link_to "Reject", toggle_field_admin_entry_path(photo, { params: { bar: "foo", 
                    baz: "wtf" } }) 
在行動

def toggle_field 
    if params[:bar] == "foo" 
    do this to photo 
    elsif params[:baz] == "wtf" 
    do that to photo 
    end  
end 
0

購買使用更好的路由就可以實現這一點,例如:

的routes.rb文件

get 'some_controller/toggle_field_action/:arg1/:arg2' => 'some_controller#toggle_field_action'), as:'toggle_field_admin_entry' 

查看文件

%td= link_to "Reject", toggle_field_admin_entry_path(photo, arg1: "test", arg2: "test2") 

您可以接收控制器動作:

params[:arg1] 
params[:arg2]