0

私はレールを初めて使用します。フォームのマークアップを再利用できるように、フォームの [action] 属性を動的にする方法を見つけようとしています。

MVC.net では、通常 :controller と :action を指定するので簡単です。

ただし、Rails には「simple_form_for(@my_model)」メソッドしかありません。

/my_models/newを参照すると、action 属性は次のようになります。

action = "/my_models"

しかし、/my_models/1/editに移動すると、action 属性は次のようになります。

action = "my_models/1"

my_model の POST を処理する新しいアクションを作成し、同じ _form.html.erb を再利用したい場合はどうすればよいですか?

4

1 に答える 1

2

実際にこれを行っているのはレールだと思います https://github.com/rails/rails/blob/master/actionpack/lib/action_view/helpers/form_helper.rb#L230

つまり、リソースと、それが新規か既存かに基づいて URL を推測するだけです。

SimpleForm の FormBuilder は ActionView::Helpers::FormBuilder から継承されています

そのコードをチェックアウトできますhttps://github.com/plataformatec/simple_form/blob/master/lib/simple_form/form_builder.rb

最後の部分が理解できていないようです。フォーム要素の部分を作成し、その部分をすべてのフォームに使用することができる、推論されたアクションの代わりにカスタムアクションを使用したいとします。

だから_form.html.erb

<%= simple_form_for @my_object do |f| %>
  <%= render 'form_elements' %>
<% end %>

_custom_form.html.erb

<%= simple_form_for @my_object, :url => custom_url do |f| %>
  <%= render 'form_elements' %>
<% end %>

_form_elements.html.erb

form elements as usual
于 2013-03-22T20:09:52.407 に答える