2015-01-08 1 views
0

У меня есть форма в рубиновом приложении, которое не работает при загрузке страницы; когда я нажимаю на «обновлении», то она работает просто отлично:Form_for form в ruby ​​не работает, когда страница загружается

  <div class="newtodoline"> 
      <div class="description text_field"> 
      <%= form_for @todo do |form| %> 
       <%= form.text_field :description, placeholder: 'Add new todo', size: 25 %></div> 
      <div class="days_old"> 
       <%= form.hidden_field :list_id, :value => @list.id %></div> 
      <div class="completed savetodo"> 
       <%= form.submit 'Save Todo' %></div> 
      <% end %> 

Я полагаю, проблема заключается в turbolinks, но, как я использую turbolinks событие, чтобы зажечь яваскрипт перехода страницы, я предпочел бы не превратить это от . , , может ли кто-нибудь предложить способ, которым я могу получить эту форму для работы при первой загрузке страницы?

У меня также могут быть проблемы с контроллерами, хотя снова, когда я обновляю страницу, эта форма работает, поэтому я не думаю, что это проблема. , , во всяком случае, эта форма создает новое todo, которое требует действия create от контроллера todos; но сама форма находится в представлении списка. Так, в моем контроллере списков у меня есть:

def show 
    @list = List.find(params[:id]) 
    @cutoff = @list.cutoff 
    if @list.todos.exists? then 
     @list.todos.each do |t| 
     if t.age_of_todo > @cutoff then 
      t.delete 
     end 
     end 
    end 
    @todos = @list.todos 
    @todo = Todo.new 
    end 

и в моем Todos контроллере:

def create 
    @todo = Todo.new(todo_params) 
    if @todo.valid? 
     @todo.save 
     redirect_to list_path(id:@todo.list_id), notice: 'Your new TODO was saved!' 
    else 
     flash[:notice] = 'You forgot to enter a description. Please try again.' 
     redirect_to :back 
    end 
    end 

    private 

    def todo_params 
    params.require(:todo).permit(:description, :list_id) 
    end 

Должен ли я закрыть turbolinks и найти новый способ вызова моих страниц переходов, или есть другой способ заставить эту форму работать?

Спасибо!

EDIT: Я должен упомянуть, что я попытался отключить turbolinks, и это устраняет проблему; к сожалению, тогда мои красивые переходы страницы также закрылись, и я не уверен, как присоединить эти переходы к событиям изменения страницы html. Я хотел бы знать, как турболинки терпят неудачу в этой конкретной форме, и как исправить это, продолжая использовать turbolinks! Кто-нибудь знает, где именно код для form_for-помощника?

+2

определяют не работает? вы получаете сообщение об ошибке? он не представляет? не делает ли это? Как вы попадаете на страницу, вы используете множество привязок в jquery. Если так вы посмотрели (https://github.com/kossnocorp/jquery.turbolinks) – Doon

+0

Нет ошибки, просто ничего не происходит. Нет привязок, без jquery, только эффект FadeIn на событие turbolink (страница: изменение). –

+0

Как насчет консоли браузера? он должен хотя бы дать вам что-то там, если не проверить сеть на консоли – neo

ответ

0

Я не нашел никакой проблемы, кроме порядка HTML тегов, открытых и закрытых, да Я нашел, что вы пропустили, чтобы закрыть тег div. Используйте код ниже:

<div class="newtodoline"> 
    <%= form_for @todo do |form| %> 
    <div class="description text_field"> 
     <%= form.text_field :description, placeholder: 'Add new todo', size: 25 %> 
    </div> 
    <div class="days_old"> 
     <%= form.hidden_field :list_id, :value => @list.id %> 
    </div> 
    <div class="completed savetodo"> 
     <%= form.submit 'Save Todo' %> 
    </div> 
    <% end %> 
</div> 

Я не уверен, что в этом вопросе, но это может помочь вам :)

+0

Большое спасибо! Это не устранило проблему, но всегда хорошая идея закрыть divs. , , –

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