2

私はまだRailsを初めてsection_links使用し、Railsアプリのメインナビゲーションとして機能するものがあります。

<%= section_link(Organisation.model_name.human(:count => 2), 'organisations', organisations_path) %>
<%= section_link(Person.model_name.human(:count => 2), 'people', people_path) %>
<%= section_link(Project.model_name.human(:count => 2), 'projects', projects_path) %>           
<%= section_link(Invoice.model_name.human(:count => 2), 'invoices', invoices_path) %>       
<%= section_link(Payment.model_name.human(:count => 2), 'payments', payments_path) %>

また、この非常に基本的なヘルパー関数を作成しました。

def section_link(title, section, path)
  options = {}  
  options[:class] = 'current' if section == controller_name
  link_to title, path, options
end

このヘルパー関数を乾かす方法はありますか?リンクを作成するために次のように言うことができます:

<%= section_link("Organisations") %>

これを数時間試しましたが、現在のコントローラーの名前をヘルパー関数に渡す方法がわかりません。

これで助けてくれてありがとう...

4

4 に答える 4

3

試してください:params [:controller]またはcontroller.controller_name

<%= section_link(params[:controller], Organisation.model_name.human(:count => 2), 'organisations', organisations_path) %>

def section_link(current_controller, title, section, path)
 options = {}  
 options[:class] = 'current' if section == controller_name
 link_to title, path, options
end
于 2013-01-24T13:45:38.207 に答える
3

多分何かのような

def section_link(model)
   title = model.singularize.capitalize.constantize.model_name.human(:count => 2)
   section = model.downcase.pluralize
   path = {controller: model.pluralize.downcase, action: :index }
   options = {}  
   options[:class] = 'current' if section == controller_name
   link_to title, path, options
end
于 2013-01-24T14:09:20.940 に答える
2

request.params[:controller]ヘルパーでコントローラー名を取得してみてください。それが機能するかどうかはわかりませんが、paramsからコントローラー名を取得できると確信しています。

于 2013-01-24T13:46:21.703 に答える
1
def current_link_to label, path, options = nil
    options ||= {} 
    options[:class] =  [options[:class], (current_page?(path) ? "active" : nil)].compact.join(" ")
    link_to label, path, options
end
于 2013-01-24T13:45:53.120 に答える