Edw*_*ord 73 ruby-on-rails ruby-on-rails-3 simple-form
是否可以在没有模型的情况下使用Simple Form(by:Plataformatec)?
hta*_*ata 117
您可以使用:symbol第一个参数.
<%= simple_form_for :user, url: users_path do |f| %>
<%= f.input :name, as: :string %>
...
<% end %>
Run Code Online (Sandbox Code Playgroud)
它将输出如下内容:
<form novalidate="novalidate" class="simple_form user" action="/users" accept-charset="UTF-8" method="post">
...
<div class="input string required user_name">
<label class="string required" for="user_name">
<abbr title="required">*</abbr> Name
</label>
<input class="string required" type="text" name="user[name]" id="user_name" />
</div>
...
</form>
Run Code Online (Sandbox Code Playgroud)
Mig*_*ero 16
不幸的是,simple_form依赖于使用模型.基本上,有一些像simple_form_tag和input_tag方法等同于rails*_tag帮助器的东西会很好.在那之前,有一个简单的工作.
在表单中使用符号而不是类,并显式传递值以防止simple_form尝试访问模型属性.
<%= simple_form_for :user, :url => '/users' do |f| %>
<%= f.text_field :name, input_html: { value: nil } %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这样可以避免undefined method 'name' for User错误.
您还可以在表单模型中使用模型外部的字段,使用simple_fields_for,如下所示:
<%= simple_form_for @user do |f| %>
<%= f.input :name %>
<%= simple_fields_for :no_model_fields do |n| %>
<%= n.input :other_field %>
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这是一个简单实用的解决方案,因为您可以从不同的模型创建不同类型的字段或不使用模型