Ruby on Rails 3 - 如何将表单中提交的变量传递到'new'操作中



我正在尝试发送消息给另一个用户。但是当我留下一个空白字段时,控制器会呈现另一个'new'动作。

下面是链接到第一个提交的视图代码:
    <%= link_to 'Send Mail', {:controller => 'messages', :action => 'new', :recipient_id => @profile.id}, :class => 'btn btn-large btn-primary' %>

下面是消息#new code:

  def new
  @message = Message.new
  @recipient = Profile.find(params[:recipient_id])
end

下面是消息#new view code:

<%= simple_form_for @message do |f| %>
<%= f.input :title %>
<%= f.input :body %>
<%= f.input :recipient_id, :as => :hidden, :input_html => {:value => @recipient.id} %>
<%= f.input :sender_id, :as => :hidden, :input_html => {:value => @recipient.id} %>
<%= f.button :submit %>
<% end %>

下面是消息#create code:

def create
@message = Message.new(params[:message])
if @message.save
  flash[:notice] = "New message created"
  redirect_to @message
else
  flash[:error] = "Did not work"
  @recipient = params[:recipient_id]
  render action: "new"
end
  end

我如何获得:recipient_id值提交的形式和传递到渲染新动作?

当您呈现new方法时,rails不会执行它的代码,而是只呈现您已经生成的new动作的视图(new.html. erbb)recipient_id足以让您的表单传递参数

Try this

    def create
        @message = Message.new(params[:message])
        if @message.save
        flash[:notice] = "New message created"
            redirect_to @message
        else
            flash[:error] = "Did not work"
            @recipient = Profile.find(params[:message][:recipient_id])
            render action: "new"
        end
end

当呈现new动作时,我们必须手动创建在视图中使用的实例。

注意:如果你想生成一个新的参数使用redirect_to方法,其中render使用以前的参数,直到一个新的请求生成

相关内容

  • 没有找到相关文章

最新更新