17

シンプルフォームを使用した通常のフォームがあります。ここで、モデルに対応するフィールドがない入力を追加したいと思います。これはコントローラーによって処理されます。私は試した

<%= simple_form_for @obj do |f| %>
  <%= f.input :name %>
  <%= f.input :attr, as: :string %>   <-- should just send "attr" as post data
<% end %>

しかし、これはMethod not found: attr_not_in_objエラーになります。もちろん、標準の Rails ヘルパーを使用することもできますが、そうすると、入力の周りの単純なフォーム HTML がすべて失われ、コピーが正しくないように思えます。

要するに、モデルに接続せずに、レールタグヘルパーのシンプルフォームバージョンのようなものを探しています。モデル属性に対応しない入力を追加するにはどうすればよいですか?

4

3 に答える 3

23

追加してみませんか:

attr_accessor :attr

モデルのクラス定義に? このようにあなたのコード:

<%= f.input :attr %>

動作するはずです。

また

この解決策が適切でない場合は、いつでも何らかの値をinputメソッドに直接渡すことができます。

<%= f.input :attr, input_html: {value: 'something'}  %>
于 2012-07-05T18:29:48.273 に答える
12

Rails フォーム ヘルパーを使用したいが、SimpleForm でラップしたいとしますか? 次のようにブロックで入力を呼び出すことにより、次のことができます。

<%= simple_form_for @obj do |f| %>
  <%= f.input :name %>
  <%= f.input :attr do %>
    <%= text_field_tag 'attr' %>
  <% end %>
<% end %>
于 2012-11-06T21:08:29.667 に答える