Frage Schienen 4 - Passing Params via link_to?


Ich habe ein einzelnes Formular - je nachdem, auf welchen Link der Benutzer klickt, um das Formular anzuzeigen, möchte ich, dass verschiedene versteckte Parameter an den Datensatz übergeben und bei der Übermittlung gespeichert werden. Gibt es einen schönen Weg, dies zu tun? Danke im Voraus!

Zum Beispiel:

<%= link_to 'General Request', new_request_path %>

<%= link_to 'Project Request', new_request_path %> ### -> set request.project = true

<%= link_to 'Administrative Request', new_request_path %>  ### -> set request.admin = true

11
2017-07-17 17:36


Ursprung


Antworten:


Für Ihre Beispiele würden Sie verwenden:

<%= link_to 'Project Request', new_request_path(project: true) %>

was würde eine Verbindung wie erzeugen http://127.0.0.1:3000/request?project=true

und

<%= link_to 'Administrative Request', new_request_path(admin: true) %>

was würde eine Verbindung wie erzeugen http://127.0.0.1:3000/request?admin=true


9
2017-07-17 18:18



Ich denke, es gibt zwei Möglichkeiten, um das zu erreichen, was Sie versuchen zu tun.

  1. Erstellen Sie 3 verschiedene Routen, um verschiedene Arten von Anfragen zu bearbeiten. Beispielsweise, new_request_path, new_project_request_path, new_admin_request_path.

  2. Wenn Sie ein neues Projekt anfordern, verwenden Sie <%= link_to 'Project Request', new_request_path(:request_type => 'project') %>. Im Controller können Sie verschiedene Anfragetypen wie diese behandeln.

def new
  case params[:request_type]
  when 'general'
    do_something
  when 'project'
    do_something_1
  when 'admin'
    do_something_else
  end

  ...
end

2
2017-07-17 18:20