2012-03-13 7 views
0

ページの表示属性を変更するためのフォームを表示する「編集」リンクを実装しようとしています。レンダリングされた部分的な受信パラメータがありません

私のレイアウトがあります。

<div id="company_info"> 
    <%= yield :company_info %> 
</div> 
<div id="edit_company_info"> 
</div> 

私のビューがあります。

<%= content_for :company_info do %> 
<%= render 'company_info' %> 
<%= link_to "Edit", 'company_info_form', :class => 'btn btn-mini', :method => :get, :remote => true %> 

私のコントローラがあります。

def company_info_form 
    @company = Company.get(params[:id]) 

    respond_to do |format| 
     format.js 
    end 
end 

マイcompany_info_form.js.erbファイルがあります。

リンクをクリックすると
$('#edit_company_info').html("<%= escape_javascript(render "company_info_form") %>"); 

、私のサーバーは示しています

Started GET "/companies/company_info_form" for 127.0.0.1 at 2012-03-12 20:19:13 -0700 
Processing by CompaniesController#show as JS 
Parameters: {"id"=>"company_info_form"} 
Completed 500 Internal Server Error in 1ms 

RuntimeError (Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id): 
app/controllers/companies_controller.rb:9:in `show' 

は、だから私は、これは、ルーティングissue--だと思うが、私はそれを修正する方法は考えています。私の現在のページにあるcompany_idパラメータを、ロード中の部分でも認識されるようにするにはどうすればよいですか?

私は/companies/1ですが、companies/company_info_formにリンクしており、"company_id = 1"パラメーターを失っています。

答えて

2

はい、あなたが指摘したように、ルートとリンクに問題があります。

最初の問題はProcessing by CompaniesController#show as JSと確認できます。だから、それは実際にcompanies#showに行き、idに基づいて会社を見つけようとします。しかし、正しいidが渡されないので、エラーが発生します。

2番目の問題は、'company_info_form'を編集用リンクのパスとして使用しているため、あなたのリンクがcompanies/company_info_formにあるためです。そしてあなたは現在の会社をリンクに通っていません。

ルートファイルに投稿していないので、ルートに問題がある可能性があるので、自分で提示します。あなたのルートで

resources :companies do 
    member do 
    get 'company_info_form' 
    end 
end 

次に、あなたのようにリンクを提供することができます

company_info_form_company GET /companies/:id/company_info_form(.:format) companies#company_info_form 

を提供します:

<%= link_to "Edit", company_info_form_company_path(@company) %> 
+0

すごいです!本当にありがとうございます。素晴らしい作品です。 – Lumen

+0

ps。あなたの質問も編集しました。編集内容を確認できますか? – prasvin

関連する問題