2016-12-04 75 views
0

我只是試圖更新assignment模式的名稱和描述。我似乎無法弄清楚我做錯了什麼?試圖更新記錄 - 導軌

這裏是我的代碼:

控制器

def edit 
    @assignment = Assignment.find_by(id: params[:id]) 
    end 

    def update 
    @assignment = Assignment.find_by(id: params[:id]) 
    if @assignment.update_attributes(assignment_params) 
     flash[:notice] = "Successfully Edited The Assignment" 
     redirect_to account_assignments_path 
    else 
     render 'edit' 
    end 
    end 

VIEW

<td><%= button_to "edit assignment", edit_account_assignment_path(assignment), method: :get %> 

都到

<%= form_for @assignment, url: account_assignments_path(@assignment) do |form| %> 
    <%= form.label :name %>: 
    <%= form.text_field :name %> 

    <%= form.label :description %> 
    <%= form.text_field :description %> 

    <%= form.submit %> 
<% end %> 

規格

it "edits an assignment" do 
    user = create(:user) 
    account = create(:account, users: [user]) 
    assignment = create(:assignment, account_id: account.id) 
    login_user(user) 

    visit account_assignments_path 
    click_button "edit assignment" 

    expect(current_path).to eq(edit_account_assignment_path(assignment)) 

    fill_in :assignment_name, with: "Edited" 
    fill_in :assignment_description, with: "Edited Too" 
    click_button "Update Assignment" 

    expect(current_path).to eq(account_assignments_path) 
    expect(page).to have_content("Successfully Edited The Assignment") 
end 

錯誤:

Creating a assignment assignment management edits an assignment 
Failure/Error: click_button "Update Assignment" 

ActionController::RoutingError: 
    No route matches [PATCH] "/account/assignments.1" 

回答

2

改變這一行:

<%= form_for @assignment, url: account_assignments_path(@assignment) do |form| %> 

到:

<%= form_for @assignment, url: account_assignment_path(@assignment) do |form| %> 

閱讀Path and URL Helpers

+0

謝謝大家的幫助! – Bitwise

+0

不要忘記閱讀Rails文檔。這是節省您的時間。 –