Ata*_*ang 4 forms ruby-on-rails
我正在使用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 %>
Run Code Online (Sandbox Code Playgroud)
这是在forward_picture_controller中嵌入表单,传递参数和调用适当的操作(创建)的正确方法吗?如何在rails 4中使用强参数策略来访问控制器中的参数?在控制器中,我可以构造一个适当的URL来发送给定的电子邮件地址.
任何帮助表示赞赏.
创建路线并给它们命名通常是一种很好的做法.在routes.rb文件中:
post :forward_picture, to: "forward_picture#create", as: :forward_picture
Run Code Online (Sandbox Code Playgroud)
最后一个属性,在这里定义:
as: :forward_picture
Run Code Online (Sandbox Code Playgroud)
将为您的路由创建"名称",从而创建一个可以从任何视图调用的name_path方法.您的表单可以像这样使用它:
<%= form_tag forward_picture_path do %>
Run Code Online (Sandbox Code Playgroud)
至于参数,你应该能够通过params [:email]或params [:picture_id]来获取.强参数仅用于质量赋值,即product.create(params [:product]),其中params可能具有Product模型的多个属性.那时你想要消化params [:product]哈希,以确保你只是允许你需要的东西.这是你使用安全参数时.
归档时间: |
|
查看次数: |
10451 次 |
最近记录: |