如何提交模型字段以外的字段

时间:2014-08-27 17:43:37

标签: ruby-on-rails

我需要编写一个返回模型的视图以及不属于模型的其他字段。

在控制器中我应该访问这些:

def create
  @post = Post.new(params[:post])
  @stuff = params[:stuff]

如何撰写视图?

3 个答案:

答案 0 :(得分:2)

您可以使用fields_for帮助

form_for @post do |f|
    f.text_field :title
    fields_for :stuff do |stuff_form|
      stuff_form.text_field :name    
    end
end

请记住,它只是fields_for而不是f.fields_for。如果你使用f.fields_for,它会将stuff_form字段作为post对象参数的一部分

答案 1 :(得分:1)

使用form helpers,因此:

<%= form_for @post do |f| %>
  <%= f.text_field :title %>
  <%= f.text_area :body, size: "60x12" %>
  <%= text_field_tag :stuff %>
  <%= f.submit "Create" %>
<% end %>

对于大多数类型的输入字段,都有f.field_typefield_type_tag助手。前者用于属于模型的字段,而后者仅仅是params中存在的其他字段。所以上面会给你一个像这样的参数:

{:post => {:title => 'the title', :body => 'the contents of the post'}, :stuff => 'contents of stuff field'}

答案 2 :(得分:0)

您可以添加不属于您的表单的字段标记,这些标记将添加到params哈希。

in haml ...

= text_field_tag :stuff, "what you want in stuff"
= hidden_field_tag :stuff, "or if you wanted a hidden field to show stuff"

将导致params hash ...

stuff=>"what you want in stuff"