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”。我怎样才能做到这一点呢?你在这里问了很多不同的问题。希望这能解决它们。如果是的话,请考虑一下我的答案。