国テーブルを参照するクライアント テーブルがあります。クライアントを挿入すると、国がドロップダウンでユーザーに提供され、クライアント テーブルに国の ID が挿入されます。クライアントの表示ページに Id の代わりに国名を表示するにはどうすればよいですか。
4 に答える
私はこれを入れて、今はうまくいっているようです。それは正しい解決策ですか?
<%= Country.find(@client.country_id).name %>
選択タグとデータベース テーブルを扱うときは、collection_select http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_selectを使用する方が良いといつも思います。
あなたが使用することができます
collection_select :client, :country_id, Country.all, :id, :name
@client.country.name
以下のような関連付けが設定されていると思います。その場合は、代わりに関連付けを通じて国名を参照できます@client.country_id
(変数とフィールド名については、ここでいくつかの仮定を置いています)。
協会は次のように設定されます。
class Client < ActiveRecord::Base
has_one :country
...
end
class Country < ActiveRecord::Base
belongs_to :client
...
end
何かのようなもの...
<%= select_tag 'country_id', options_from_collection_for_select(@countries, 'id', 'name') %>
http://apidock.com/rails/ActionView/Helpers/FormTagHelper/select_tag
以下のコメントによると、URL で単語を取得する最も簡単な方法は、次のようなモードで params をオーバーライドすることです。
def to_param
"#{id}-#{name}".parameterize
end
しかし、それは完璧ではなく、数が含まれています。番号を取り除くには、通常スラッグと呼ばれる一意の文字列を作成し、スラッグによってすべての検索を行います。