あなたが私を助けることができると信じてください。
レガシー コードに新しい機能を追加しようとしています (タイプミス)。しかし、ルーティングに問題があるようです。
プロジェクトでは、ルートは次の方法で生成されます。
%w{advanced cache categories comments content profiles feedback general pages
resources sidebar textfilters themes trackbacks users settings tags redirects seo post_types }.each do |i|
match "/admin/#{i}", :to => "admin/#{i}#index", :format => false
match "/admin/#{i}(/:action(/:id))", :to => "admin/#{i}", :action => nil, :id => nil, :format => false
end
私の機能は、記事のマージに関するものです。そのために、/admin/contentコントローラーに新しいアクションを追加しました。
def merge
#some code here
end
私が追加したビューの部分 (_form.html.erb) の一部:
<% if current_user.admin? and !@article.id.nil?%>
<div class=''>
<h4><%= _("Merge Articles") %></h4>
<%= label_tag :merge_with, 'Article ID' %><%= text_field_tag :merge_with, nil, :size => 20 %>
<%= button_to 'Merge', admin_content_merge_path(:id => @article.id) %>
</div>
<%end%>
このパーシャルは、別のパーシャル (_edit.html.erb) によってレンダリングされます。
<%= form_tag(form_action, :id => "#{form_type}_form", :enctype => "multipart/form-data", :class => className) do %>
<%= render :partial => "form" %>
<% end %>
そして最後に _edit.html.erb がビュー new.html.erb によってレンダリングされます
<%= render "admin/shared/edit", { :form_type => "article", :form_action => { :action => "new", :id => @article.id , :class => ('autosave')} } %>
問題は、新しくマージされた記事を含む編集ページをレンダリングできるようにする、上記のコントローラー アクションの正しいルートを記述する方法です。私が書いた:
match "/admin/content/merge/:id" => "admin/content#merge",:as => 'admin/content/merge'
rake ルートの出力:
admin_content_merge /admin/content/merge/:id(.:format) {:controller=>"admin/content", :action=>"merge"}
しかし、私が見ることができるように、新しいまたは編集アクションが呼び出されています。
どうやら私のルートが間違っているようですね。
これで私を助けてくれませんか。
前もって感謝します!
アップデート
最新のnew.html.erb :
<% @page_heading = _('New article') %>
<%= render "admin/shared/edit", { :form_type => "article", :form_action => { :action => "new", :id => @article.id , :class => ('autosave')} } %>
<% if current_user.admin? and !@article.id.nil?%>
<%= form_tag "/admin/content/merge/#{@article.id}" do %>
<h4><%= _("Merge Articles") %></h4>
<%= label_tag :merge_with, 'Article ID' %>:
<%= text_field_tag :merge_with %><br />
<%= submit_tag "Merge" %>
<% end %>
<% end %>