Получение первой части из двух частей params[:id] в рельсах

Я уверен, что на этот вопрос уже был дан ответ, но я искал везде, поэтому заранее извиняюсь. Когда я бегу:

<%= params %>

Я отвечаю: {"контроллер"=>"веселье/таксоны", "действие"=>"шоу", "id"=>"женщины/длинный рукав"}

Я пытаюсь получить доступ к :id в действии show контроллера таксонов. У меня есть:

def show
  @taxon_id = params[:id]
end

Это присваивает @taxon_id «женщины/длинные рукава».

Есть ли способ получить только «женщины» из «женщин / с длинным рукавом».

Я хотел бы сделать частичное на основе этого, что-то вроде:

<% if @taxon_id == params[:id] %>
  <%= render 'shared/#{#taxon_id}' %>
<% end %>

Но вместо рендеринга «общие/женщины» он пытается отобразить «общие/женщины/с длинным рукавом», что не является частичным.

Спасибо.


person reknirt    schedule 12.03.2013    source источник


Ответы (3)


Если вам просто нужны "женщины" из хэша ваших параметров, вы можете сделать

@taxon_id = params[:id].split("/").first
person rocket scientist    schedule 12.03.2013
comment
Спасибо за ваш быстрый ответ! - person reknirt; 12.03.2013

Я бы просто разделил на / и взял первый элемент результирующего массива:

params[:id].split('/').first
person Kyle    schedule 12.03.2013
comment
Спасибо! Я признателен за это. - person reknirt; 12.03.2013

Если он всегда будет в этом формате, вы можете изменить свой маршрут:

match '/spree/taxons/:id/:slug' => 'taxons#show'

И ваше поле :id будет соответствовать правильно.

person Richard Brown    schedule 12.03.2013
comment
Спасибо! Я признателен за это. - person reknirt; 12.03.2013