Рельсы, флажок - PullRequest
       13

Рельсы, флажок

3 голосов
/ 08 декабря 2010

Я не знаю, как вернуть проверенные значения.Вот мой код

controller:

  def index

    // there I would like to get checked cities

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @cities }
    end

  end


viewer:

  <%= render 'form' %>


_form:

  <% for cities in Database.find(:all) %>
  <div>
    <%= check_box_tag cities.city1 %>
    <%= cities.city1 %>
  </div>
  <% end %>

РЕДАКТИРОВАТЬ

Я пытался:

@cities = Database.find(:all)
params[:cities].each do |city|
  ...
end

и

<% for city in @cities %>
<%= check_box_tag "cities[]", city.id %> <%= city.city1 %>
<% end %>

но получилошибка:

You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each

Ответы [ 3 ]

5 голосов
/ 08 декабря 2010

Привет Ваша проблема, похоже, похожа на HABTM через флажки, попробуйте

<%form_tag "some_action", :method => :post do %>
  <% Database.find(:all).each do |city| %>
    <div>
      <%= check_box_tag "cities[]",city.city1, :false %>
      <%= citiy.city1 %>
    </div>
  <% end %>
<%end%>

и внутри контроллера

def some_action
  if !request.post?
    @cities = Database.find(:all)
    render 'view'
  else
    params[:cities].each do |city|
      ...
    end
    redirect_to view_path
  end
end
2 голосов
/ 08 декабря 2010

Чтобы сделать это, вам нужно перебрать список городов и добавить для каждого check_box_tag с названием «towns []».

Обычно я предоставляю список в качестве переменной для использования вПосмотреть.Выполните Database.find в контроллере.

<% for city in @cities %>
  <%= check_box_tag "cities[]", city.id %> <%= city.name %>
<% end %>

Примечание. Если флажки не установлены, для параметра ничего не будет отправлено - т. Е. Вообще не будет никакого параметра 'city []',Возможно, вам придется добавить это в зависимости от логики вашего поиска.Если это так, добавьте в форму ...

<%= hidden-field_tag "cities[]", '' %>

Или вы можете справиться с этим в контроллере.

1 голос
/ 08 декабря 2010

Поместите отладчик в код вашего контроллера. Что происходит, когда вы проверяете свои параметры? Есть ли что-то похожее на params [: city]? Если так, что там?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...