Ich erstelle eine Join-Tabelle, die mir zeigt, welcher Mitarbeiter welches Comic verkauft hat. Als ich in meinem Mitarbeiternamen eingeben, wird es mir diesen Fehler gebenIch bekomme einen NoMethodError und ich bin mir nicht sicher warum
NoMethodError in Showemployeesales#employeesaleout
undefined method `name_id' for nil:NilClass
Hier mein Code
für meinen Controller istdef employeesaleout
@employee_name = params[:employee_name_in]
r = Employee.find_by_name_id(@employee_name)
@sale_list = r.sales
end
Hier ist mein Code für meine Eingabe Ansicht „employeenamein“
<h1>Showemployeesales#employeenamein</h1>
<p>Find me in app/views/showemployeesales/employeenamein.html.erb</p>
<%= form_tag(showemployeesales_employeesaleout_path, :controller =>
"showemployeesales", :action => "employeesaleout", :method => "post") do
%>
<div class="field">
<%= label_tag :Employee_Name %><br />
<%= text_field_tag :employee_name_in %>
</div>
<div class="actions">
<%= submit_tag "Submit Employee Name" %>
</div>
<% end %>
Hier ist mein Code für meine Ausgabeansicht
<center><h1>These are the Sales for <%= @employee_name %> </h1></center>
<br /> <br />
<center><table width = 65% border = 1>
<tr> <th> Comic Name </th><th> Comic ID </th></tr>
<% @sale_list.each do |m| %>
<tr> <td> <%= m.product.name_id %> </td> <td> <%= m.product.id_no %>
</td></tr>
<% end %> </table> </center><br /> <br />
Und meine Produkte Tisch unter meinem Schema
create_table "products", force: :cascade do |t|
t.string "name_id"
t.integer "id_no"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
Was mache ich falsch?
Sie müssen ein 'Produkt' ohne eine' name_id' haben. Am einfachsten ist es, Ihre Daten anzuzeigen und dieses Feld zu aktualisieren. –
Es tut mir leid, aber ich weiß nicht, worauf Sie hinauswollen. Was soll ich machen? Ich bin ziemlich neu bei Ruby on Rails. In meiner Produkttabelle habe ich 2 Einträge mit einem Namen und einer ID und nichts ist leer. –
@AlejandroMontilla Ich habe RoR seit Jahren programmiert und habe keine Ahnung, worauf Sie hinauswollen. – max