2014-09-22 45 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