3

醜い URL のリファクタリング

求人から新しい求人応募にリンクしますが、応募用に生成された URL が少し乱雑に感じられ、クリーンアップする方法があるかどうか疑問に思っています。

このあまりきれいではない URL から移動する方法はありますか?:

http://localhost:3000/applications/new?application%5Bjob_id%5D=1

このきれいなものに?:

http://localhost:3000/applications/new

前もって感謝します!


コード:

ジョブ コントローラ:

def show
  @job = Job.find(params[:id])
end

ジョブショー:

<%= link_to "New Application", new_application_path(:application => { :job_id => @job.id }) %>

アプリケーションコントローラー

def new
  @application = Application.new(params[:application])
end

新しいアプリ

<%= form_for @application do |f| %>

  <%= f.hidden_field :job_id, :value => @application.job_id %>

  <%= f.label :email %>:
  <%= f.text_field :email %>

  <br />

  <%= f.submit "Submit" %>

<% end %>

編集

(rake ルートと routes.rb を追加)

レーキルート

    applications GET    /applications(.:format)          applications#index
                 POST   /applications(.:format)          applications#create
 new_application GET    /applications/new(.:format)      applications#new
edit_application GET    /applications/:id/edit(.:format) applications#edit
     application GET    /applications/:id(.:format)      applications#show
                 PUT    /applications/:id(.:format)      applications#update
                 DELETE /applications/:id(.:format)      applications#destroy
            jobs GET    /jobs(.:format)                  jobs#index
                 POST   /jobs(.:format)                  jobs#create
         new_job GET    /jobs/new(.:format)              jobs#new
        edit_job GET    /jobs/:id/edit(.:format)         jobs#edit
             job GET    /jobs/:id(.:format)              jobs#show
                 PUT    /jobs/:id(.:format)              jobs#update
                 DELETE /jobs/:id(.:format)              jobs#destroy

Routes.rb

resources :applications

resources :jobs
4

1 に答える 1

1

使用したくない場合nested routes(ネストされたルートを使用することをお勧めします)。しかし、問題を解決するための多くの解決策があります。URL(つまり)のパラメータを避けるhttp://localhost:3000/applications/new?application%5Bjob_id%5D=1ためhttp://localhost:3000/applications/newformの代わりにショーページで使用する必要がありますlink。次のように実行できます。

  <%= form_tag url_for(new_application_path) do %>
    <%= hidden_field_tag "application['job_id']", @job_id %> 
    <%= submit_tag "New application" %>
  <% end %>
于 2013-02-16T12:11:03.043 に答える