2015-03-19 49 views
1

我想覆蓋控制器中的默認new方法來接收一些參數。什麼是最好的方法來做到這一點?改變路線並像這樣爲方法添加一個參數?發送params到新的方法

get 'article/:id/new', to: 'articles#new', as: :new_article 

和Controller:

def new(master) 
    @article = current_user.articles.new(master) 
end 

有沒有更好的方式來做到這一點?我唯一能夠實現的方式是在表單中隱藏一個領域,這並不理想。

+0

你不需要改變路線,如果路線已經是一個RESTful途徑(例如'資源:文章'),你只需要將'new'方法/動作添加到控制器,它將全部正常工作。然而 - 我不清楚爲什麼你需要將'master'作爲參數傳遞給action?你能從這些參數中提取出來嗎? – 2015-03-19 00:08:55

+0

我正在改變路線的工作方式。在構建'new'時,我想加載一個'master'資源來填寫表單的一半。 – 2015-03-19 00:10:25

+1

這不是如何行動工作..他們不直接參數。他們通過參數散列參數 - 所以你不妨使用現有的新行動 – 2015-03-19 00:15:31

回答

1

你有一個鏈接到你的new行動的表單?那在那裏就壞了,它應該只是一個鏈接。

只需添加PARAMS到鏈接:

link_to "New Article", new_article_path(some_param: "some_value") 

然後在控制器:

def new 
    @article = current_user.articles.new some_param: params[:some_param] 
end 
+1

連續兩次。謝謝! – 2015-03-19 00:17:30

+1

對不起,我看到你的評論,只是更新我的電話到'新' - 你是對的,我忘了'params [:some_param]'只是一個值,而不是散列。現在你可以看到我在前面添加了'some_param:',所以總體上一個散列正被傳遞給'new'。 – smathy 2015-03-19 00:28:48

+0

完全拉德。在'new'和'create'之間有關於存儲':some_param'的任何想法? (如上所述,不希望讓我真棒'hidden_​​field'的想法變得更長......) – 2015-03-19 00:39:34

相關問題