2012-07-31 52 views
0

我試圖更新帖子,它告訴我「目標語言已成功更新」,但實際上只要我點擊更新按鈕,帖子就會回到原來的位置。我在日誌中找不到任何錯誤消息,任何人都可以幫助我?帖子無法更新

結果當我運行耙路線

project_target_langs GET /projects/:project_id/target_langs(.:format)   target_langs#index 
         POST /projects/:project_id/target_langs(.:format)   target_langs#create 
new_project_target_lang GET /projects/:project_id/target_langs/new(.:format)  target_langs#new 
edit_project_target_lang GET /projects/:project_id/target_langs/:id/edit(.:format) target_langs#edit 
    project_target_lang GET /projects/:project_id/target_langs/:id(.:format)  target_langs#show 
         PUT /projects/:project_id/target_langs/:id(.:format)  target_langs#update 
         DELETE /projects/:project_id/target_langs/:id(.:format)  target_langs#destroy 
         POST /projects/:project_id/target_langs/:id(.:format)  target_langs#update 

我的控制器代碼

def update 

    @project = Project.find(params[:project_id]) 
    @targetLang = @project.targetLangs.find(params[:id]) 


    respond_to do |format| 
     if @targetLang.update_attributes(params[:targetLang]) 
     format.html { redirect_to project_path(@project), notice: 'Target language was successfully updated.' } 
     format.json { head :no_content } 
     else 
     format.html { render action: "edit" } 
     format.json { render json: @project.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

Show.erb

<% @project.targetLangs.each do |targetLang| %> 

    <%= form_for([targetLang.project, targetLang]) do |f| %> 

      <%= f.text_field :language, :class => 'textbox1' %> 
      <%= f.text_field :status, :class => 'textbox1' %> 
      <%= f.text_area :notes, :size => "30x2", :class => 'textbox1' %> 
      <%= link_to 'Remove', [targetLang.project, targetLang], 
        :data => {:confirm => 'Confirm deletion!'}, 
        :method => :delete %> 
      <%= link_to 'Update', [targetLang.project, targetLang], 
        :method => :update %> 

的routes.rb

Dashboard::Application.routes.draw do 
    resources :projects do 
    resources :target_langs 
    match '/target_langs/:id' => 'target_langs#update', :via => :post 

end 

我的日誌

Started POST "/projects/5/target_langs/14" for 127.0.0.1 at 2012-07-31 10:14:58 -0400 
Processing by TargetLangsController#update as HTML 
    Parameters: {"authenticity_token"=>"kTkBzwah/MylU9N96i+s5lu99PskX28XF0eK1THsHLY=", "project_id"=>"5", "id"=>"14"} 
    ←[1m←[35mProject Load (0.0ms)←[0m SELECT "projects".* FROM "projects" WHERE "projects"."id" = ? LIMIT 1 [["id", "5"]] 
    ←[1m←[36mTargetLang Load (0.0ms)←[0m ←[1mSELECT "target_langs".* FROM "target_langs" WHERE "target_langs"."project_id" = 5 AND "target_langs"."id" 
= ? LIMIT 1←[0m [["id", "14"]] 
    ←[1m←[35m (0.0ms)←[0m begin transaction 
    ←[1m←[36m (0.0ms)←[0m ←[1mcommit transaction←[0m 
Redirected to http://localhost:3000/projects/5 
Completed 302 Found in 125ms (ActiveRecord: 0.0ms) 
Started GET "/projects/5" for 127.0.0.1 at 2012-07-31 10:14:59 -0400 
Processing by ProjectsController#show as HTML 
    Parameters: {"id"=>"5"} 
    ←[1m←[35mProject Load (0.0ms)←[0m SELECT "projects".* FROM "projects" WHERE "projects"."id" = ? LIMIT 1 [["id", "5"]] 
    ←[1m←[36mTargetLang Load (0.0ms)←[0m ←[1mSELECT "target_langs".* FROM "target_langs" WHERE "target_langs"."project_id" = 5←[0m 
    ←[1m←[35mProject Load (0.0ms)←[0m SELECT "projects".* FROM "projects" WHERE "projects"."id" = 5 LIMIT 1 
    ←[1m←[36mCACHE (0.0ms)←[0m ←[1mSELECT "projects".* FROM "projects" WHERE "projects"."id" = 5 LIMIT 1←[0m 
    ←[1m←[35mCACHE (0.0ms)←[0m SELECT "projects".* FROM "projects" WHERE "projects"."id" = 5 LIMIT 1 
    ←[1m←[36mCACHE (0.0ms)←[0m ←[1mSELECT "projects".* FROM "projects" WHERE "projects"."id" = 5 LIMIT 1←[0m 
    ←[1m←[35mCACHE (0.0ms)←[0m SELECT "projects".* FROM "projects" WHERE "projects"."id" = 5 LIMIT 1 
    Rendered projects/show.html.erb within layouts/application (46.9ms) 
    Rendered layouts/_shim.html.erb (0.0ms) 
    Rendered layouts/_header.html.erb (0.0ms) 
    Rendered layouts/_footer.html.erb (0.0ms) 
Completed 200 OK in 94ms (Views: 93.8ms | ActiveRecord: 0.0ms) 


Started GET "/assets/custom.css?body=1" for 127.0.0.1 at 2012-07-31 10:14:59 -0400 
Served asset /custom.css - 304 Not Modified (0ms) 
[2012-07-31 10:14:59] WARN Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true 


Started GET "/assets/projects.css?body=1" for 127.0.0.1 at 2012-07-31 10:14:59 -0400 
Served asset /projects.css - 304 Not Modified (0ms) 
[2012-07-31 10:14:59] WARN Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true 


Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2012-07-31 10:14:59 -0400 
Served asset /application.css - 304 Not Modified (31ms) 
[2012-07-31 10:14:59] WARN Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true 


Started GET "/assets/scaffolds.css?body=1" for 127.0.0.1 at 2012-07-31 10:14:59 -0400 
Served asset /scaffolds.css - 304 Not Modified (15ms) 
[2012-07-31 10:14:59] WARN Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true 


Started GET "/assets/target_langs.css?body=1" for 127.0.0.1 at 2012-07-31 10:14:59 -0400 
Served asset /target_langs.css - 304 Not Modified (0ms) 
[2012-07-31 10:14:59] WARN Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true 


Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2012-07-31 10:14:59 -0400 
Served asset /jquery.js - 304 Not Modified (0ms) 
[2012-07-31 10:14:59] WARN Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true 


Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2012-07-31 10:14:59 -0400 
Served asset /jquery_ujs.js - 304 Not Modified (0ms) 
[2012-07-31 10:14:59] WARN Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true 


Started GET "/assets/projects.js?body=1" for 127.0.0.1 at 2012-07-31 10:14:59 -0400 
Served asset /projects.js - 304 Not Modified (0ms) 
[2012-07-31 10:14:59] WARN Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true 


Started GET "/assets/target_langs.js?body=1" for 127.0.0.1 at 2012-07-31 10:14:59 -0400 
Served asset /target_langs.js - 304 Not Modified (0ms) 
[2012-07-31 10:14:59] WARN Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true 


Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2012-07-31 10:14:59 -0400 
Served asset /application.js - 304 Not Modified (0ms) 
[2012-07-31 10:14:59] WARN Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true 


Started GET "/assets/telelingua.gif" for 127.0.0.1 at 2012-07-31 10:14:59 -0400 
Served asset /telelingua.gif - 304 Not Modified (0ms) 
[2012-07-31 10:14:59] WARN Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true 
+0

請添加#update動作的日誌部分,以便我們可以檢查它是否實際更新數據庫 – 2012-07-31 14:41:26

+0

@AnonyAlberto oops,我確實有另一部分代碼,我上傳了它。 – 2012-07-31 15:10:35

回答

0

我覺得這裏有一個簡單的問題。

你有兩個環節,一是:刪除(我猜的作品),另一個用於:更新(這不工作)

簡單地說,在HTML的<a>標籤(這是什麼link_to收益)會不提交表格。

當你在你的例子中點擊「更新」時,你發送的唯一參數就是id。

相反,你應該說submit_tag("Update")

這將提交表單,所有應該很好。

+0

你的意思是將<%= link_to'更新',[targetLang.project,targetLang], :method =>:update%>改成<%= submit_tag(「Update」)%>?我試過了,它仍然不起作用。 – 2012-07-31 15:01:48

+0

以及'link_to'永遠不會工作。在這種情況下,還必須有另一個問題。 – 2012-07-31 15:05:23

+0

我更新了我的日誌,並且可以檢查它是否在數據庫中更新? – 2012-07-31 15:12:35