У меня есть именованный маршрут, который правильно проверяется в консоли и показывает: url_title, который должен быть включен в params [], но параметры [] всегда пусты.Устранение неполадок с пустыми параметрами [] хеш с Rails3 Upgrade
Вопрос в том, почему params [] пуст? Я ожидаю, что он должен иметь параметры [: url_title].
Я также удалил этот маршрут и использовал ресурс по умолчанию, а params [] по-прежнему пуст.
Я проверяю параметры с помощью регистратора.
Мое приложение - это обновление от Rails 2.3.5 до Rails 3.0.3.
Вот краткое описание кода о том, что происходит.
# this is my route
match 'papers/:url_title' => 'papers#show', :as => :permalinkpaper
# this is link_to and the generated url being called
<%= link_to paper.title, paper_path(paper.url_title) %>
http://localhost:3000/papers/great-passion
# which properly matches to this controller#action for papers#show
def show
@paper = Paper.where(:url_title => params[:url_title]).first()
PaperHistory.add(current_user, @paper.id)
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @paper }
format.json { render :json => @paper }
format.mobile # { render :layout => false }
end
end
# which generals this error because the Paper looking returns noting because the params[:url_title] is nil
Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
# the log stack trace
Started GET "/papers/great-passion" for 127.0.0.1 at Mon Jan 24 23:04:04 -0600 2011
Processing by PapersController#show as HTML
SQL (0.7ms) SHOW TABLES
SQL (0.5ms) SHOW TABLES
Paper Load (0.7ms) SELECT `papers`.* FROM `papers` WHERE (`papers`.`url_title` IS NULL) ORDER BY title LIMIT 1
Completed in 119ms
RuntimeError (Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id):
app/controllers/papers_controller.rb:43:in `show'
# I've validated the route in the console and it seems to know :url_title is the proper value
>> r = ActionController::Routing::Routes
>> r.recognize_path "/papers/great-passion"
=> {:action=>"show", :url_title=>"great-passion", :controller=>"papers"}
UPDATE: Я обнаружил, что Params [] не пусты, когда значения в URL, например, при выполнении поиска.
http://localhost:3000/papers?utf8=%E2%9C%93&keywords=passion
Это успешно производит
Started GET "/papers?utf8=%E2%9C%93&keywords=passion" for 127.0.0.1 at Tue Jan 25 00:20:07 -0600 2011
Processing by PapersController#index as HTML
Parameters: {"utf8"=>"✓", "keywords"=>"passion"}
params: utf8✓keywordspassion
Вы можете оставить свой отзыв? –
Это на самом деле ссылка. <% = link_to paper.title, paper_path (paper.url_title)%> –
Я не могу найти что-то не так с кодом, который вы опубликовали. До строки 'match', которую вы опубликовали, есть ли что-нибудь еще в отношении бумаг на маршрутах.rb? – weltraumpirat