语法错误,意外 keyword_do_block,预期 keyword_end ...关闭

syntax error, unexpected keyword_do_block, expecting keyword_end ...off

我正在尝试开发具有一些日期形式的 redmine 插件。 当我尝试配置路由设置时,rails 向我显示此错误。我无法修复它。问题出在哪里?

我收到这个错误:

/days/new.html.erb:20: syntax error, unexpected tLABEL, expecting keyword_end ...ppend= form_for(@daysoff) url: {action: "create"} do |f| @o... ... ^ /var/www/redmine/plugins/days_off_redmine/app/views/days/new.html.erb:20: syntax error, unexpected keyword_do_block, expecting keyword_end ...off) url: {action: "create"} do |f| @output_buffer.safe_appe... ... ^ /var/www/redmine/plugins/days_off_redmine/app/views/days/new.html.erb:44: syntax error, unexpected keyword_ensure, expecting end-of-input

config/routes.rb

get 'days_off_redmine', :to => 'days#index'
get 'days_off_redmine/new', :to => 'days#new'
post 'days_off_redmine', :to => 'days#create'

model/daysoff.rb

class Daysoff < ActiveRecord::Base
unloadable
end

days_controller.rb

class DaysController < ApplicationController
  unloadable

    def index


  end

  def new
    @people = User.all
    @user = User.current

    @daysoff = Daysoff.new
  end

  def create
  end



end

days/index.html.erb

<%= link_to 'New', days_off_redmine_new_path %>

days/new.html.erb

<%= form_for(@daysoff) url: {action: "create"} do |f| %>
<%= f.date_field :date, id: 'altField' %>
<%= f.select_field "user", options_from_collection_for_select(@people, "id", "name"), prompt: "Select user" %> 
<%= f.submit "Submit" %>
<% end %>

附加问题:其实我不需要额外的页面,post我的表格在index controller中如何?

将您的表单更改为:

<%= form_for @daysoff do |f| %>
  <%= f.date_field :date, id: 'altField' %>
  <%= f.select_field "user", options_from_collection_for_select(@people, "id", "name"), prompt: "Select user" %> 
  <%= f.submit "Submit" %>
<% end %>

Actually I don't need extra page, how can post my form in the index controller?

只需在索引操作中实例化@daysoff 和@people 变量即可。

def index
  @people = User.all
  @user = User.current

  @daysoff = Daysoff.new
end

你想,喜欢:

<%= form_for @daysoff, url: {action: "create"} do |f| %>
<%= form_for(@daysoff) url: {action: "create"} do |f| %>
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            this should be arguments to the form_for method

...但是你关闭了括号所以出现语法错误,它应该是:

<%= form_for(@daysoff, url: {action: "create"}) do |f| %>

...或者更通俗地说,只是:

<%= form_for @daysoff, url: {action: "create"} do |f| %>