2016-06-20 18 views
0

verwenden Ich versuche, herauszufinden, wie man eine Hilfsmethode aus einer Ansicht für den Zugriff auf in einem zugeordneten GerüstRails 4 - Wie Helfer Text in einer zugehörigen Teil

I Modelle genannt Projekt und Ethic habe. Die Verbände sind:

Project has_many :ethics 
Ethic belongs_to :project 

In meiner Ethik Helfern, ich habe:

module EthicsHelper 
    def text_for_subcategory(category) 
     if category == 'Risk of harm' 
      [ "Physical Harm", "Psychological distress or discomfort", "Social disadvantage", "Harm to participants", "Financial status", "Privacy"] 
     elsif category == 'Informed consent' 
      ["Explanation of research", "Explanation of participant's role in research"] 
     elsif category == 'Anonymity and Confidentiality' 
      ["Remove identifiers", "Use proxies", "Disclosure for limited purposes"] 
     elsif category == 'Deceptive practices' 
      ["Feasibility"] 
     else category == 'Right to withdraw'  
      ["Right to withdraw from participation in the project"] 
     end 
    end 

end 

dann in meinen Projekten Ordner anzuzeigen, Ich habe einen Teil genannt _ethics.html.erb, die hat:

<% @project.ethics.each do | project_ethics_issue | %> 
         <strong>ETHICS CONSIDERATION: <%= project_ethics_issue.text_for_subcategory(@category) %></strong> 
         <%= project_ethics_issue.considerations %> 

        <% end %> 

In meinen Projekten Controller habe ich versucht:

include EthicsHelper 

Als ich dies versuchen, ich erhalte eine Fehlermeldung, die sagt:

undefined method `text_for_subcategory' for #<Ethic:0x007fedc57b7b58> 

Kann jemand sehen, wo ich falsch gegangen?

Antwort

0

In Datei _ethics.html.erb, ändern Sie diesen Code als:

<% @project.ethics.each do | project_ethics_issue | %> 
    <strong>ETHICS CONSIDERATION: <%= text_for_subcategory(@category).join(",") %></strong> 
    <%= project_ethics_issue.considerations %> 
<% end %> 

Update:

ich in der Datei sah ethics_helper.rb, wie es scheint Ihre Logik-Code nicht korrekt ist.

module EthicsHelper 
    def text_for_subcategory(category) 
    if category == 'Risk of harm' 
     [ "Physical Harm", "Psychological distress or discomfort", "Social disadvantage", "Harm to participants", "Financial status", "Privacy"] 
    elsif category == 'Informed consent' 
     ["Explanation of research", "Explanation of participant's role in research"] 
    elsif category == 'Anonymity and Confidentiality' 
     ["Remove identifiers", "Use proxies", "Disclosure for limited purposes"] 
    elsif category == 'Deceptive practices' 
     ["Feasibility"] 
    elsif category == 'Right to withdraw'  
     ["Right to withdraw from participation in the project"] 
    else 
     [] 
    end 
    end 
end 
+0

danke @Khanh - das funktionierte, um den Inhalt des Helfers anzuzeigen, aber es zeigt den Text innerhalb [""]. Ich kann diese Tags nicht aus dem Helper entfernen, da ich dann ein Fehler beim Anzeigen des Formulars erhalte. – Mel

+0

Weil du deinen Text in 'array' legst, also wenn du Text als' Erklärung der Forschung, Erklärung der Rolle des Teilnehmers in der Forschung' anzeigen willst, schreibst du nur als: 'text_for_subcategory (@category) .join (", ")' –

+0

es gibt nur eine Sache im Array. Der Inhalt des Arrays wird ordnungsgemäß in der Form angezeigt, aber in der Show teilweise zeigt es innerhalb [""]. Ich möchte nur den Inhalt des ausgewählten Elements des Arrays anzeigen (was in diesem Fall das einzige Ding im Array ist. Ich möchte nicht, dass [""] angezeigt wird. – Mel