Ruby on rails 在表单标记中调用特定操作

Ruby on rails 在表单标记中调用特定操作,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 4,在我的问题控制器中,我投了行动票 帮助我从视图中调用此操作的助手是什么? 我试过: vote_for_question_path(@question) 但这不起作用 路径帮助程序只有在您的routes.rb中将其定义为命名路由时才会出现。因此,如果您想要一个命名的非RESTful路由(确实如此),您应该将以下内容添加到路由文件中: get 'vote_for_question/:id', to: 'question#vote_for', as: 'vote_for_question' 然后您

在我的问题控制器中,我投了行动票

帮助我从视图中调用此操作的助手是什么? 我试过:

vote_for_question_path(@question)

但这不起作用

路径帮助程序只有在您的
routes.rb
中将其定义为命名路由时才会出现。因此,如果您想要一个命名的非RESTful路由(确实如此),您应该将以下内容添加到路由文件中:

get 'vote_for_question/:id', to: 'question#vote_for', as: 'vote_for_question'
然后您可以在视图中调用
vote\u for\u question\u path(@question.id)
,它将生成例如
/vote\u for\u question/1


有关此问题的详细信息,请参阅。

既然您已经为
问题
资源定义了资源路由,那么您应该首先在现有资源路由上添加:

# config/routes.rb
resources :questions do
  member do
    get 'vote_for'
  end
end
这将创建以下路由:

vote_for_question GET    /questions/:id/vote_for(.:format)    questions#vote_for
# app/controllers/questions_controller.rb
def vote_for
  # logic goes here
end
接下来,为生成的路由创建控制器操作:

vote_for_question GET    /questions/:id/vote_for(.:format)    questions#vote_for
# app/controllers/questions_controller.rb
def vote_for
  # logic goes here
end
最后,在您的视图中,您可以通过将收集路径传递给
link\u to
helper来构建到路由的链接:

<%= link_to "Vote", vote_for_question_path(@question) %>

请注意,因为要用按钮替换链接,所以应该确保传递了正确的HTTP提交方法(在本例中为
GET
)作为参数。

是否在
routes.rb
文件中定义了它?否。。但是我添加了资源:问题我应该为这个特定的操作添加一个路径吗?什么不起作用?您是否收到错误?请尝试将添加到资源路由。我在下面发布了一个答案,列出了一步一步的操作说明。我使用的是form_标签而不是link_to,对吗?这是因为我使用的是一个按钮。您不需要使用
表单标签
。我已经更新了我的答案,以演示如何使用
按钮来实现这一点。谢谢!现在我在HTML中已经有了这个代码:我如何用Link kto来替换它?我想用Link kto替换它来帮助助手VoTyfFoQuasyPosithPoad,而不是HRef=“/Sqss/VoTeTyFur/AsQual.ID”。我怎样才能做到这一点呢?你在这里问了很多不同的问题。希望这能解决它们。如果是的话,请考虑一下我的答案。