2014-09-22 64 views
3

我正在使用rails 4.0.2框架。我有一個圖片腳手架,並從'圖片'的顯示頁面,我正在努力添加一個簡單的內置表單將其轉發到一個電子郵件地址。
輸入一封電子郵件並點擊「轉發」按鈕後,它應該發送一封電子郵件中的當前圖片鏈接。但我正在努力實現這一目標。我創建了一個控制器'forward_picture',其中包含動作'create',並將其作爲資源添加到config/routes文件中。然後我在圖片視圖中創建了一個表單,如下所示。rails 4 form_tag用法

的意見/圖片/ show.html.erb

... 
<%= form_tag(:controller => "forward_picture", :action => "create") do %> 
    <%= hidden_field_tag :picture_id, params[:@picture.id] %> 
    <%= label_tag :email %> 
    <%= text_field_tag :email, params[:email] %> 
    <%= submit_tag "Forward" %>  
<% end %> 

這是嵌入形式,傳遞參數,並呼籲在forward_picture_controller適當行動(創建)的正確方法?在rails 4中,如何使用強參數策略來訪問控制器中的參數?在控制器中,我可以構建一個適當的URL來發送給定的電子郵件地址。

任何幫助表示讚賞。

回答

5

創建路線並給它們命名通常是很好的做法。在你的routes.rb文件:

post :forward_picture, to: "forward_picture#create", as: :forward_picture 

最後一個屬性,定義如下:

as: :forward_picture 

會爲您的路線創建一個「名稱」,並因此創建可以從任何一個調用方法name_path視圖。然後,您的形式可以使用這樣的:

<%= form_tag forward_picture_path do %> 

至於參數,你應該能夠隨參數得到[:電子郵件]或PARAMS [:picture_id]。強參數僅用於批量分配,即product.create(params [:product]),其中參數可能具有產品模型的多個屬性。那時候你想清理params [:product]哈希以確保你只允許你需要。這是你使用安全參數的時候。

+0

我會嘗試一下並回復你。謝謝馬塞洛。 – Atarang 2014-09-23 14:46:01