我在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事件激发javascript页面转换时,我宁愿不关闭它。 。 。任何人都可以建议一种方法,我可以在第一次加载页面时使用此表单吗?
我的控制器中可能也有问题,但是当我刷新页面时,表单仍然有效,所以我不认为这是问题所在。 。 。无论如何,这个表单创建了一个新的待办事项,它需要来自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
在我的待办事项控制器中:
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
我是否必须关闭turbolink并找到一种新的方式来调用我的页面转换,还是有另一种方法可以使这个表单有效?
谢谢!
编辑:我应该提一下,我已经尝试过关闭turbolinks,它确实解决了这个问题;不幸的是,然后我的漂亮页面转换也关闭了,我不知道如何将这些转换附加到html页面更改事件。我很想知道turbolinks是如何失败这种特殊形式的,以及如何在使用turbolinks的同时修复它!有谁知道form_for帮助器本身的代码在哪里?答案 0 :(得分: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>
我不太确定这个问题,但它可能对你有帮助:)。