2017-04-14 1 views
0

Existe-t-il un moyen de passer une variable à une instance dans un show partiel? Fondamentalement, je crée un service qui suit CRUD et que je veux être capable d'itérer une variable instanciée. Je peux créer en faisant passer une partie comme ceci:Comment utiliser les variables locales lors de l'appel show sur un objet, c'est-à-dire @ object.this _ # {variable}?

Dans la vue parent:

<%= form_for(@report) do |f| %> 
    <%= render :partial => "reports/forms/partial_form", :locals => {:g => f, :var => "01"} %> 
<% end %> 

Dans la vue partielle:

<label><%= "Enter Data for Variable #{lane_number}" %></label> 
<%= g.text_field :"Variable_#{var}" %> 

Ceci est utile variables dans la partie ont une même -enough convention de nommage pour utiliser le même var pour parcourir plusieurs éléments. Cela fonctionne très bien.

Je voudrais faire quelque chose de similaire en regardant les données d'entrée, mais je ne peux pas comprendre comment passer ce var à la variable d'instance.

Dans la vue parent:

<%= render :partial => "reports/shows/partial_show", :locals => {:var => "01"} %> 

Dans la vue partielle:

<%= @report.Variable_#{var} %> 

Je sais que #{var} est juste utilisé pour l'interpolation de chaîne (ce qui est la raison pour laquelle il travaille dans le créer d'origine), mais y a-t-il un moyen pour moi de faire cela en passant la variable au partiel?

+1

Bienvenue sur Stack Overflow. Nous ne nous soucions pas si vous êtes nouveau ou manque d'expertise dans une langue. Nous nous soucions beaucoup de savoir si vous avez fait votre recherche et posé une question détaillée et concise. Lire "[ask]" et les pages liées, ainsi que "Comment poser des questions à la manière intelligente" (http://catb.org/esr/faqs/smart-questions.html) ", en particulier http: // catb .org/esr/faqs/smart-questions.html # idm46227255999488 –

Répondre

1

Vous pouvez utiliser metaprogramming pour obtenir valeur de la variable parce que vous appelez simplement une méthode:

<%= @report.send("variable_#{var}") %> 
+0

A travaillé comme un charme! Merci - J'ai pensé que c'était quelque chose de simple que je ne comprenais pas. –