我想创建一个文章与其他用户不CURRENT_USER并为我在一个会话ID保存到其他用户我收回这个ID与视图中收集到这个地步一切工作正常,但是当我试图用我的帮手:selected_user到我的文章控制器与if语句不在这里工作是我的代码:Rails的创建与其他用户的文章不CURRENT_USER
def new
if selected_user.present?
@article = selected_user.articles.build state: :step1
render_wizard
else
@article = current_user.articles.build state: :step1
render_wizard
end
end
所以,我要求如果selected_user.present?我想创建这个USER_ID 的文章,但没有别的,我想与CURRENT_USER
我的创建方法来创建,它是:
def create
if selected_user.present?
step = :step1
@article = selected_user.articles.build article_params_step1
@article.state = step.to_s
if @article.save
redirect_to wizard_path(next_step, article_id: @article)
else
render_wizard
end
else
step = :step1
@article = current_user.articles.build article_params_step1
@article.state = step.to_s
if @article.save
redirect_to wizard_path(next_step, article_id: @article)
else
render_wizard
end
end
end
所以,是的,当我跑我的看法控制器跳转到其他部分。
只是为了澄清我selected_user不归为零,但这里是实现:
selections_controller.rb:
class SelectionsController < ApplicationController
before_action :authenticate_user!
def create
session[:selected_user_id] = params[:user][ :user_id]
redirect_to root_path
end
end
,在我application_controller.rb:
helper_method :selected_user
def selected_user
@selected_user ||= User.find(session[:selected_user_id])
end
和在视图:
<%= form_tag({ :controller => "selections", :action => "create" } , :class => "navbar-form navbar-left") do %>
<%= collection_select(:user, :user_id, User.all, :id, :name, prompt: "Escoge cliente")%>
<%= submit_tag 'Enviar' %>
<% end %>
,如果我尝试创建一个没有选择从我收集的用户出现这个错误的文章:
Couldn't find User with 'id'=
,但是当我从集合中选择我的用户一切正常。所以只需要当我不选择用current_user创建任何东西时。
谢谢你的时间!
问候!
请问您可以包含'selected_user'辅助方法的代码吗? – JackCollins
你得到的错误是什么? –
如果您希望'selected_user'返回保存在会话中的用户(不是current_user),但返回'nil',那么'selected_user'逻辑中似乎有错误。请提供'selected_user'的实现细节以供进一步查看。 – Dharam