Ich möchte eine form_for @user
, aber eine benutzerdefinierte Aktion im Controller des Benutzers veröffentlichen.
Wie kann ich das machen?
ruby-on-rails
Blankman
quelle
quelle
url_for
es notwendig ist. Auch da Controller der gleiche ist, könnten Sie verwendenform_for @user, :url => :action => 'myaction'
Folgendes funktioniert für mich:
quelle
action:
( Aktionspunkt ) api.rubyonrails.org/classes/ActionView/Helpers/…form_for @user, url: {action: 'myaction'}
aber es gibt mirNo route matches {:action=>"myaction", :controller=>"users"}
Fehler.resources :users do
collection do
get :myaction
end
end
Ich habe es so gemacht
Beachten Sie den optionalen Parametersatz
id
für das Benutzerinstanz-ID-Attribut.quelle
Alternativ kann dasselbe
form_tag
mit der folgenden Syntax erreicht werden:Wie unter http://guides.rubyonrails.org/form_helpers.html#multiple-hashes-in-form-helper-calls beschrieben
quelle
@user
. Durch die Verwendung von aform_tag
werden die Attribute des Objekts nicht an die Formularfelder gebunden.Wenn Sie beim Rendern eines Teilformulars einen benutzerdefinierten Controller an form_for übergeben möchten, können Sie Folgendes verwenden:
und dann in der Form teilweise diese lokale Variable wie folgt verwenden:
quelle
neue Syntax
quelle