rails 4 form_tag用法

时间:2014-09-22 23:13:31

标签: ruby-on-rails forms

我使用的是rails 4.0.2框架。我是一个图片脚手架,并且来自“图片”的展示页面。我正努力添加一个简单的内置表单,将其转发到电子邮件地址 输入电子邮件并点击'转发'按钮它应该在电子邮件中发送当前图片链接。但我正在努力实现这一目标。我创建了一个控制器' forward_picture'行动'创造'并将其添加为config / routes文件中的资源。然后我在图片视图中创建了一个表单,如下所示。

视图/图片/ 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中嵌入表单,传递参数和调用适当的操作(create)的正确方法吗?如何在rails 4中使用强参数策略来访问控制器中的参数?在控制器中,我可以构造一个适当的URL来发送给定的电子邮件地址。

感谢任何帮助。

1 个答案:

答案 0 :(得分:6)

创建路线并给它们命名通常是一种很好的做法。在routes.rb文件中:

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

最后一个属性,在此处定义:

as: :forward_picture

将创建一个名称&#39;为您的路由,并因此创建一个可以从任何视图调用的name_path方法。然后您的表单可以像这样使用它:

<%= form_tag forward_picture_path do %>

至于参数,你应该能够通过params [:email]或params [:picture_id]来获取。强参数仅用于质量赋值,即product.create(params [:product]),其中params可以具有Product模型的多个属性。当你想要消化params [:product]哈希以确保你只是允许你所需要的时候。这是你使用安全参数的时候。