[こんにちは、これは私の最初の質問Stackoverflowですので、私と一緒にご負担ください、私は可能な限り詳細を与えるようにします。私はコーディングに新しく、現在はレールアプリで作業しています。私はディスカッションボードを作成しています。私はこれまでユーザーモデルとディスカッションモデルを構築しました。ここでは、ディスカッションはユーザーとユーザーの間で議論があります。私のテストは10行目で失敗しています。新しいディスカッションのリンクが適切なルートに設定されているように見えます。私が試してみると正しいパスが表示されます.15行目では現在のパスがインデックスページにあります。私のテストがうまく書かれていないのか、私が何かを逃してしまったのかどうか分からない。私はこのスクリーンショットと一緒に十分な情報であることを願っています...私は文字通りこれで一日を過ごしました、そして私は知恵の終わりです...どんな助けも大変ありがとうございます。キュウリを使ってRailsルートが動作しない
私のテスト*テスト*
[1] pry(#<Cucumber::Rails::World>)> current_path
=> "https://stackoverflow.com/users/1715/discussions"
[2] pry(#<Cucumber::Rails::World>)> new_user_discussion_path(@user.id)
=> "https://stackoverflow.com/users/1715/discussions/new"
[3] pry(#<Cucumber::Rails::World>)> expect(current_path).to
eq(new_user_discussion_path(@user.id))
RSpec::Expectations::ExpectationNotMetError:
expected: "https://stackoverflow.com/users/1715/discussions/new"
got: "https://stackoverflow.com/users/1715/discussions"
からCURRENT_PATHに詮索をバインド
# A user starts a new discussion
Given("they click on the discussion link") do
click_link 'DISCUSSIONS'
end
Then("they will be redirected to the discussions index page") do
expect(current_path).to eq(user_discussions_path(@user.id))
end
When("they click on the new discussion link") do
click_link 'New Discussion'
end
Then("they will be redirected to the new discussion page") do
expect(current_path).to eq(new_user_discussion_path(@user.id))
end
ディスカッションインデックスページ*
<div class="container">
<div class="grid">
<%= render 'discussions_navbar' %>
<%= link_to "New Discussion", new_user_discussion_path %>
</div>
</div>
新しい議論のための*
[1] pry(#<#<Class:0x007fd3a62cf660>>)> new_user_discussion_path
=> "https://stackoverflow.com/users/1722/discussions/new"
エラーメッセージ*
When they click on the new discussion link # features/step_definitions/discussion_steps.rb:10
undefined method `discussions_path' for #<#<Class:0x007fd3a62cf660>:0x007fd3a6681740> (ActionView::Template::Error)
./app/views/discussions/_form.html.erb:1:in `_app_views_discussions__form_html_erb__787511772381390310_70273503263920'
./app/views/discussions/new.html.erb:4:in `_app_views_discussions_new_html_erb___371545055918840709_70273503334040'
./features/step_definitions/discussion_steps.rb:11:in `"they click on the new discussion link"'
features/discussion.feature:10:in `When they click on the new discussion link'
フォーム*
<%= simple_form_for @discussion do |d| %>
<%= d.input :title, label: "Discussion Title" %>
<%= d.input :description %>
<%= d.button :submit %>
<% end %>
ルート*
user_discussions GET /ユーザー/新ディスカッションリンク上
バインディングPRY :user_id/discussion(。:format)議論の#インデックス
POSTの/users/:user_id/discussions(.:format)#は new_user_discussion GETの/users/:user_id/discussions/new(.:format)のディスカッションを作成ディスカッション#新しい
まっすぐに本当にそうです - 'new_user_discussion_path'は' user_id'のPARAMが必要です。インデックスページビューで提供していません。 – max
私は1 ...すでに、ユーザーIDがパスから範囲内であることを...私のbinding.pryを見てみました: