it-swarm.com.de

Ruby on Rails Ansichten erzeugen

Gibt es eine Möglichkeit, die Ansichten separat mit dem Befehl "Rails Generieren" zu generieren? Ich wäre auch bereit, einen Edelstein zu installieren, um diese Aufgabe zu erfüllen. Grundsätzlich gibt mir der Gerüstbefehl zu viel und ich würde meinen Controller lieber von Hand codieren. Das Schreiben der Indexansicht mit einer Tabelle für die Datensätze wäre jedoch nicht sehr effizient.

50
Jason Yost

Wenn Sie den Controller-Generator verwenden, generiert dies die Controller-Aktion und die Ansicht.

Rails g controller controllername new create

Dadurch werden neue und Aktionen mit ihren relevanten Ansichten erstellt.

Sie müssen Ihre Routen damit noch manuell einrichten.

79
Gazler

der erste Teil ist der Name des Modells/Controllers, der zweite Teil sind die Aktionen.

2
Martin Lang

Eine besondere Situation ist, wenn Sie einer vorhandenen Steuerung einenewview hinzufügen möchten.

Verwenden Sie in diesem Fall einfach den regulären Befehl. Achten Sie jedoch darauf, jedes Mal 'n' zu sagen, um die vorhandenen Dateien nicht zu überschreiben.

Fügen Sie beispielsweise eine Ansicht mit dem Namen 'invite' zu einem vorhandenen Controller mit dem Namen 'projects' hinzu:

[email protected]:~/railsapps/project_manager$ Rails -v
Rails 5.1.4
[email protected]:~/railsapps/project_manager$ Rails generate controller projects invite
Running via Spring preloader in process 46253
    conflict  app/controllers/projects_controller.rb
Overwrite /home/smith/railsapps/project_manager/app/controllers/projects_controller.rb? (enter "h" for help) [Ynaqdh] n
        skip  app/controllers/projects_controller.rb
       route  get 'projects/invite'
      invoke  erb
       exist    app/views/projects
      create    app/views/projects/invite.html.erb
      invoke  test_unit
    conflict    test/controllers/projects_controller_test.rb
  Overwrite /home/smith/railsapps/project_manager/test/controllers/projects_controller_test.rb? (enter "h" for help) [Ynaqdh] n
        skip    test/controllers/projects_controller_test.rb
      invoke  helper
   identical    app/helpers/projects_helper.rb
      invoke    test_unit
      invoke  assets
      invoke    coffee
   identical      app/assets/javascripts/projects.coffee
      invoke    scss
    conflict      app/assets/stylesheets/projects.scss
    Overwrite /home/smith/railsapps/project_manager/app/assets/stylesheets/projects.scss? (enter "h" for help) [Ynaqdh] n
        skip      app/assets/stylesheets/projects.scss
[email protected]:~/railsapps/project_manager$ 
1
Varus Septimus

Wie zuvor von Sameers erwähnt, gab es einen Post, der zeigte, wie man einfach die Ansichten erzeugt. Alle Ansichten für Ihr Modell werden mithilfe der Rails-Standardvorlagen erstellt, was sehr praktisch ist.

Wenn Sie wie ich etwas mehr anpassbares wünschen, können Sie Folgendes erreichen.

Sie können Ihren eigenen Generator erstellen, damit Sie so etwas haben.

Schienen erzeugen Ansicht NAME VIEW [Optionen]

Um dies zu erreichen, müssen Sie Folgendes tun.

Rails generate generator view

Dadurch werden einige Dateien für Sie im Ordner lib/generators/view/erstellt.

Öffnen Sie die Datei view_generator.rb und fügen Sie den folgenden Code hinzu.

class ViewGenerator < Rails::Generators::Base
  source_root File.expand_path('templates', __dir__)
  argument :name, type: :string
  argument :action, type: :string

  def generate_view
    template "#{file_name}.html.erb", "app/views/#{folder_name}/#{file_name}.html.erb"
  end

  private

  def folder_name
    name.underscore
  end

  def file_name
    action.underscore
  end

  def type
    name.titleize.singularize
  end

  def down_type
    name.downcase.singularize
  end

  def render_form
    "<%= render 'form', #{down_type}: @#{down_type} %>"
  end

  def render_link_back
    "<%= link_to 'Back', #{folder_name}_path %>"
  end
end</pre>

Als Nächstes müssen Sie die Datei erstellen, die wir als Vorlage verwenden, die in der Methode generate_view verwendet wird.

Erstellen Sie mit der Aktion new als Beispiel eine filelib/generators/view/new.html.erb und fügen Sie Folgendes hinzu. 

<h1>New <%= type %></h1>

<%= render_form %>

<%= render_link_back %>

Passen Sie die Vorlagenansicht nach Ihren Wünschen an. Sie müssen auch die _form.html.erb hinzufügen. Fügen Sie weitere zusätzliche Variablen und Logik in Ihre view_generator.rb-Datei ein, und Sie sind fertig.

Es ist mehr Arbeit, aber es kann sich lohnen, wenn Sie ständig ähnliche Ansichten generieren.

Der beste Anwendungsfall für diesen Ansatz ist, wenn Sie Ihre Plattform mit einem White-Label versehen und mehrere Dateien für ein Kundenprofil generieren müssen.

0
spqr-praetoria