Маршруты и первичные ключи в рельсах - PullRequest
1 голос
/ 18 января 2010

Я - новичок на рельсах и боюсь, что мой вопрос совершенно неосведомлен - пожалуйста, будьте нежны.

Я создаю приложение, которое будет каталогизировать и отслеживать другие веб-сайты, и мне нужно синхронизироваться с внешним источником данных (таким образом, переопределяя первичный ключ).

У меня есть модель ниже, но я не могу определить маршрут для доступа к отдельным записям (хотя список работает)

какие-нибудь указатели?

class Affiliate < ActiveRecord::Base

require 'resolv'
  require 'rubygems'
  require 'rwebthumb'
  include Simplificator::Webthumb
  self.primary_key = "domain"
  validates_uniqueness_of :domain
  validates_presence_of [:org_name, :url], :message => "can't be blank"

  after_create :generate_thumbnail 

  def to_param
    id.chomp.gsub(".","")
  end


  def generate_thumbnail
    wt = Webthumb.new(APP_CONFIG['webthumb_api']['key'])
    job = wt.thumbnail(:url => url)
    job.write_file(job.fetch_when_complete(:medium2), "#{RAILS_ROOT}/public/data/#{id}.png")
  end

  def thumbnail_url
    "/data/#{id}.png"
  end

  def thumbnail_localfile
    File.exist?("#{RAILS_ROOT}/public/data/#{id}.png") ? "#{RAILS_ROOT}/public/data/#{id}.png" : nil
  end

  def thumbnail_last_updated
    if thumbnail_localfile
      File.new(thumbnail_localfile).mtime.to_s(:long)
    else
      "No such file"
    end
  end


end

обновление: спасибо вам обоим!

Оказывается, проблема заключалась в заказе маршрутов в моем routes.rb

Ответы [ 2 ]

2 голосов
/ 19 января 2010

Если вы сгенерировали модель Affiliates с помощью генератора скаффолдов, вы сможете получить доступ к отдельным филиалам, выполнив http://localhost:3000/Affiliates/show/

Если это не работает, попробуйте указать маршрут в rout.rb в каталоге конфигурации вашего проекта.
Там вы можете связать URL с действием, а затем написать действие самостоятельно. Запись для маршрутов. Rb: map.connect 'affiliates /: id',: controller => 'affiliates',: action => 'show'

, а затем простая функция в контроллерах для возврата аффилиата

функция в .rb: Def Show affiliate = Affiliate.find_by_id (params [: id]) конец

Теперь переменная партнера будет содержать атрибуты партнера, идентифицируемого по: id

2 голосов
/ 18 января 2010

Респонденты переполнения стека редко имеют в виду, даже если их посты быстро редактируются кем-то с более высоким рангом.

Чтобы получить список всех ваших маршрутов, вы можете перейти к каталогу rails в терминале и затем выполнить команду:

rake routes

Это выплюнет все маршруты в вашем приложении,Если вы создали модель с использованием генератора строительных лесов, вы можете, как правило, добраться до нее, перейдя к http://localhost:3000/:model_name/:action_name/:id.Поэтому, если ваша модель была названа Партнером, и вы хотели показать Партнера, и вы хотели показать Партнеру с идентификатором 22. Вы бы выбрали http://localhost:3000/Affiliate/show/22.Я надеюсь, что это поможет, если нет, пожалуйста, продолжайте с комментариями к ответу, я понимаю, что начать с чего-то нового, даже изучая правильные вопросы, может быть проблемой само по себе.

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