Возникли проблемы с выпадающим списком форм в Ruby on Rails - PullRequest
0 голосов
/ 23 сентября 2011

Это моя форма:

<table>
  <tbody>
  <% form_for :HhActiveCarrier, @carriers, :url => { :action => "update" } do |f| %>
  <% for carrier in @carriers %>
    <tr>
      <%= render :partial => "summary_detail", :locals => {:carrier => carrier, :f => f} %>
    </tr>
  <% end %>
  </tbody>
</table>
  <%= submit_tag "Update" %>
  <% end %>

С моим частичным:

<td class="tn"><%= h(carrier.name.to_s()) -%></td>
<td class="sc"><%= h(carrier.country.to_s()) -%></td>
<td class="sc"><%= select_tag(:country, options_for_select(@countries)) -%></td>

Это контроллер, в котором я определяю переменные:

class ActiveCarriersController < ApplicationController

    def index
        @carriers = HhActiveCarrier.find(:all)
        for carrier in @carriers
            country = carrier["country"]
            if country.nil?
                carrier["country"] = "none"
            end
        end
        @countries = ["USA", "UK", "Canada"]
    end

Все это работает. Тем не менее, если я внесу изменения в раскрывающийся список в форме:

<td class="sc"><%= f.select("country", @countries) -%></td>

Я получаю эту ошибку:

Showing app/views/active_carriers/_summary_detail.rhtml where line #3 raised:

undefined method `country' for #<Array:0xef79a08>

Extracted source (around line #3):

1: <td class="tn"><%= h(carrier.name.to_s()) -%></td>  
2: <td class="sc"><%= h(carrier.country.to_s()) -%></td>  
3: <td class="sc"><%= f.select("country", @countries) -%></td>  

Trace of template inclusion: /app/views/active_carriers/_summary.rhtml, >/app/views/active_carriers/index.rhtml

Что я делаю не так с выбором формы? Я использую Ruby on Rails 2.3.8

Stackoverflow говорит мне, что у меня нет большого объяснения для всего кода, который я имею, поэтому я просто пишу материал. Я действительно не знаю, что еще объяснить, поэтому задавайте вопросы, если вы не все понимаете. Также я не мог процитировать сообщение об ошибке, потому что Stackoverflow постоянно говорил мне, что у меня есть код, в котором нет блоков кода, поэтому мне пришлось поместить блоки кода вокруг сообщения об ошибке.

1 Ответ

0 голосов
/ 23 сентября 2011

Попробуйте это: f.select("carrier", "country", options_for_select(@countries))

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