TL einen lokalen String in eine teilweise in Ruby passieren; DR Version der FrageWie auf Schienen
Ist es möglich, einen String in einen Teil und diese Zeichenfolge die teilweise Verwendung in einer if-Anweisung muss passieren oder Schaltergehäuse.
Bricht ich eine wertvolle Regel von Rails, indem ich die Ansichten direkt miteinander sprechen lasse?
Long Version w/Code Snippets
Ich denke, es ist sicher, dass in der Zeit an diesem Punkt sagen, die ich gelesen habe jede Nachricht gibt es darüber, wie eine lokale Variable zu übergeben. Ich habe immer noch Schwierigkeiten damit. Ich bin sehr neu in Schienen, wie .. 1 Woche des Lernens, also was ich versuche zu tun, könnte völlig inkorrekt sein.
Wie auch immer, ich habe es so eingerichtet, dass, wenn ein Benutzer auf einen Link in der Navigationsleiste klickt ein Bootstrap modal lädt mit der richtigen Form darin. Ich habe jede einzigartige Form als ihre eigene partielle festgelegt, so dass ich dort einfach hinfallen kann, wo nötig und ich habe das Modal auch als partiell eingerichtet. Ich versuche, dieser DRY-Methode zu folgen und es so zu machen, dass es im modalen Teil eine if/else- oder Switch-Logik hat, die nur die korrekte Form lädt, basierend auf dem, was die Verbindung passiert.
Modal Teil:
<!-- Modal -->
<div class="modal fade" id="modalTemplate" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">Modal Template</h4>
</div>
<div class="modal-body">
<% if %VARIABLE% == "%PASSED-INPUT%" %>
<% @customer = Customer.new %>
<%= render "customers/new" %>
<% elsif %VARIABLE% == "%PASSED-INPUT%" %>
--> Do something else
<% end %>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
NavBar Teil:
<%= render 'layouts/modal_template' %>
<nav class="navbar navbar-default navbar-fixed-side">
<h6 class="navbar-heading">Customer Management</h6>
<div class="list-group">
<%= link_to "Add New Customer", '#modalTemplate', 'data-toggle' => 'modal', what_to_render: "Test", class: 'list-group-item' %>
<%= link_to "Manage Customers", '#', class: 'list-group-item' %>
</div>
<h6 class="navbar-section-heading">Customer Status Management</h6>
<div class="list-group">
<%= link_to "Add New Customer Status", new_customers_status_path, class: 'list-group-item' %>
<%= link_to "Manage Customer Statuses", '#', class: 'list-group-item' %>
</div>
</nav>
Die Hauptansicht für diese Seite:
<div class="container-fluid">
<div class="row">
<div class="col-sm-3 col-lg-2">
<%= render 'layouts/side-nav' %>
</div>
<div class="col-sm-9 col-lg-10">
<div class="well">
<%= render 'test' %>
<%= render 'view_customers' %>
</div>
</div>
</div>
</div>
Nun ist die "Hinzugefügt Neuer Kunde" link_to der Teil das gibt mir die größte Mühe. Ich habe jede mögliche Kombination ausprobiert, die online zur Verfügung gestellt wird, aber es scheint immer auf der Idee zu basieren, mit einem Objekt oder etwas aus der Datenbank zu arbeiten. Die Sache ist, ich versuche nur eine andere Seite basierend auf der ausgewählten Schaltfläche zu laden, während ich das gleiche modale Teil benutze.
link_to Beispiele, die ich versucht habe:
<%= link_to "Add New Customer", '#modalTemplate', 'data-toggle' => 'modal', what_to_render: "Test", class: 'list-group-item' %>
<%= link_to "Add New Customer", '#modalTemplate', 'data-toggle' => 'modal', :locals => { what_to_render: "Test" }, class: 'list-group-item' %>
Es gibt mehr, aber ich habe so viele Zeilen Code an dieser Stelle gelöscht, dass ich sie verloren haben. Einige beinhalteten die Verwendung von link_to mit: partially und: localhosts
': Einheimische' ist eine Option für 'render', nicht' link_to'. –
übergeben Sie Ortsansässige, während Sie teilweise nicht in link_to Helper rendern. – Dhanabal
Die 'ruby-on-rails-x' Tags sollen anzeigen, dass die Frage für eine bestimmte Version von Rails gilt. Verwenden Sie nicht mehr als eins. – max