【问题标题】:rails 4 form_tag usagerails 4 form_tag 用法
【发布时间】:2014-09-22 23:13:30
【问题描述】:

我正在使用 rails 4.0.2 框架。我有一个图片脚手架,并且从“图片”的显示页面中,我正在努力添加一个简单的内置表单以将其转发到电子邮件地址。
输入电子邮件并单击“转发”按钮后,它应该在电子邮件中发送当前图片链接。但我正在努力实现这一目标。我使用“create”操作创建了一个控制器“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 中嵌入表单、传递参数和调用适当操作(创建)的正确方法吗?在rails 4中给定强大的参数策略,如何使用访问控制器中的参数?在控制器中,我可以构造一个适当的 URL 来发送给定的电子邮件地址。

感谢任何帮助。

【问题讨论】:

    标签: ruby-on-rails forms


    【解决方案1】:

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

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

    最后一个属性,在这里定义:

    as: :forward_picture
    

    将为您的路线创建一个“名称”,从而创建一个可以从任何视图调用的 name_path 方法。然后您的表单可以像这样使用它:

    <%= form_tag forward_picture_path do %>
    

    参数应该可以通过params[:email]或者params[:picture_id]获取。强参数仅用于批量分配,即 product.create(params[:product]) 其中 params 可以具有 Product 模型的多个属性。那时你想清理 params[:product] 哈希以确保你只允许你需要的东西。这是您使用安全参数的时候。

    【讨论】:

      猜你喜欢
      • 2014-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      • 1970-01-01
      • 1970-01-01
      • 2015-10-16
      相关资源
      最近更新 更多