2017-04-21 47 views
0

我試圖將項目ID從其顯示頁面傳遞到employee_projects窗體,我可以在其中顯示項目名稱。我得到的錯誤是嘗試通過ID時未定義的方法

undefined local variable or method `project_id' for #<EmployeeProjectsController:0xb8bdd58>. 

employee_project控制器:

# GET /employee_projects/new 
    def new 
    puts params[project_id] 
    @project = Project.find(params[:project_id]) 
    session[:project_id] = @project.id 
    @employee_project = EmployeeProject.new 
    end 

employee_projects形式

Assign worker for this project <%= project.projectName%><br> 

    <div class="field"> 
    <%= f.label :employee_id %><br> 
    <%= f.collection_select :employee_id, Employee.all, :id, :empLastName, :prompt => "Select worker" %> 
    </div> 

    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

項目顯示

<%= button_to "Assign!", new_employee_project_path(project_id: @project.id) , class: "btn btn-primary", :method => :get %> 

沒有人有怎樣的任何想法解決這個問題?

+0

請無論您是在節目越來越@ project.id。頁。 –

回答

0

在您的控制器中,嘗試將puts params[project_id]更改爲puts params[:project_id]

paramsHash所以你必須用符號來引用它的鍵,即:project_idproject_id只是一個沒有賦值的變量,因此錯誤爲undefined local variable or method 'project_id' for #

UPDATE"Couldn't find Project with 'id'="修復)

在項目show視圖按鈕不發送參數project_id即使你把它傳遞給new_employee_project_path助手(檢查網址字符串,你會看到它結束於?而沒有參數)。要解決這個問題,我建議使用常規form而不是button_to幫手。

因此,而不是這一行:

<%= button_to "Assign!", new_employee_project_path(project_id: @project.id) , class: "btn btn-primary", :method => :get %> 

嘗試使用此form

<form action="<%= new_employee_project_path %>" method="get"> 
    <input type="hidden" name="project_id" value="<%= @project.id %>"> 
    <input type="submit" value="Assign!" class="btn btn-primary"> 
</form> 
+0

仍然無法正常工作,正在「無法找到項目'ID'=」現在錯誤。 – David16

+0

最有可能的是'@ project'沒有價值,你可以分享'employee_project_controller.rb'的'show'動作嗎? – Gerry

+0

我在employee_project_controller中的show方法只是一個空方法?在我的演示頁面中,我可以使用@ project tho來調用項目中的所有值,例如@ project.projectName,並且可以在顯示頁面上正常工作 – David16

相關問題