2010-08-09 2 views
0

Я по-прежнему новичок в Ruby on Rails, и в настоящее время у меня проблема с маршрутизацией и перенаправлением.Перенаправление и маршрутизация Ruby on Rails

У меня есть два контроллера «кандидат» и «опрос». Я в настоящее время просмотра «canidate/editEmail.html»

http://www.otoplusvn.com/TherapistSurvey/candidates/editEmail/2

После нажатия кнопки отправить щелкают, метод кандидата для обновления электронной почты выполняется:

def updateEmail 
    @candidate = Candidate.find(params[:id]) 

    respond_to do |format| 
     if @candidate.update_attributes(params[:candidate]) 
     flash[:notice] = 'Candidate email was successfully updated.' 
     format.html { redirect_to :controller => "survey", :action => "end" } 
     format.xml { head :ok } 
     else 
     format.html { render :action => "edit" } 
     format.xml { render :xml => @candidate.errors, :status => :unprocessable_entity } 
     end 
    end 
    end 

Этот код будет обновлять Письмо кандидата в базу данных и перенаправить его. Я хочу перенаправить его на html-страницу с именем end.html.erb, которая находится под представлением/Survey/end.html.erb. Тем не менее, с настоящим кодексом, это даст мне

Unknown action 

No action responded to show. Actions: download and lastPage 

где скачать и Lastpage являются единственными методами в контроллере Survey. «end» - это не метод, определенный в файле survey_controller.rb, но я предположил, что он автоматически перейдет к end.html.erb, находящемуся под просмотром/опросом

На моей локальной машине я могу получить это для работы с этим обновленным кодом:

format.html { redirect_to :controller => "survey/end" } 

Но это не работает на сайте, на котором я загрузил рубин на железнодорожном приложении. В любом случае, я думаю, что, возможно, есть более простой способ сделать это, и я делаю это неправильно.

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

Обычно я бы думать, что если бы я пошел прямо в файл

http://www.otoplusvn.com/TherapistSurvey/survey/end

я бы смог увидеть страницу, как я был в состоянии на моей локальной машине, но я не в состоянии с что я принимал.

В общем, я просто хочу, чтобы иметь возможность перенаправлять (перескакивать) на другую страницу html, указывая, что обновление электронной почты было выполнено правильно и что опрос окончен. Все это вызвано нажатием кнопки отправки, результатом которой является обновление базы данных, называемой перенаправлением на другую страницу. Проблема заключается в том, как правильно выполнить перенаправление.

КСТАТИ: в моем routes.rb у меня есть

map.resources :survey 

Любые консультации Оценил. Благодаря! D

ответ

1

Вы должны добавить все другие действия вы хотите.

карта.ресурсы добавляют только потребность маршрута при просмотре ресурсов.

Так добавить в опции коллекции вашего конца метода в вашем случае

map.resources :survey, :collection => {:end => :get} 
+0

Я добавил его, но до сих пор вижу неизвестное действие. Я сделал рейк-маршруты, чтобы показать вам пути. PUT /candidates/:id(.:format) {: controller => "кандидаты",: action => "update"} DELETE /candidates/:id(.:format) {: controller => "кандидаты" ,: action => "destroy"} end_survey GET /survey/end(.format) {: controller => "survey",: action => "end"} – darewreck

+0

действительно означает, что «конец» должен быть определен как или иметь его как end.html.erb достаточно для просмотра/просмотра? – darewreck

+0

Я также обновил «конец» до «lastPage», поэтому он не путается с ключевым словом end, назовите otoplusvn.com/TherapistSurvey/candidates/editEmail/2, и вы получите страницу otoplusvn.com/TherapistSurvey/survey/lastPage - – darewreck

1

Добавить это routes.rb

map.resources :survey, :collection => {:end => :get} 

Run реки маршруты из терминала в маршруте вашего приложения, чтобы увидеть ваши маршруты.

Использование имени маршрута:

redirect_to survey_end_path 
+0

как survey_end_path определена. Я обновил код, чтобы отразить это, но его давая мне неопределенная локальная переменная или метод 'survey_end_path 'для # <КандидатыController: 0xb6bfd9dc> – darewreck

+0

Я пробовал« end_survey_path », так как это то, что распечатывается, когда вы делаете« рейк-маршруты ». " Он печатает «end_survey». но по-прежнему нет. – darewreck

+0

Я также обновил «конец» до «lastPage», поэтому он не путается с завершением ключевого слова щелкните http://www.otoplusvn.com/TherapistSurvey/candidates/editEmail/2 и вы ' Я получу страницу http://www.otoplusvn.com/TherapistSurvey/survey/lastPage – darewreck

Смежные вопросы